Самый быстрый способ подмножества - таблица данных по сравнению с MySQL

Я являюсь пользователем R, и я часто обнаруживаю, что мне нужно писать функции, которые требуют подмножества больших наборов данных (десятки миллионов строк). Когда я применяю такие функции к большому количеству наблюдений, это может занять очень много времени, если я не буду осторожен с тем, как я их реализую.

Для этого я иногда использовал пакет data.table, и он обеспечивает намного быстрее, чем подмножество с использованием фреймов данных. Недавно я начал экспериментировать с такими пакетами, как RMySQL, помещая некоторые таблицы в mysql и используя пакет для выполнения запросов sql и возврата результатов.

Я обнаружил смешанные улучшения производительности. Для небольших наборов данных (миллионы) кажется, что загрузка данных в data.table и установка правильных ключей ускоряет поднабор. Для больших наборов данных (от 10 до 100 миллионов), похоже, отправка запроса в mysql происходит быстрее.

Интересно, есть ли у кого-нибудь представление о том, какой метод должен быстрее возвращать простые запросы на подмножество или агрегирование и должно ли это зависеть от размера данных? Я понимаю, что установка ключей в data.table в некоторой степени аналогична созданию индекса, но у меня нет особой интуиции, кроме этого.

20
задан exl 6 July 2011 в 01:30
поделиться