Я пытаюсь выполнить подсчет n-грамм в Python и подумал, что могу использовать MySQL (модуль MySQLdb) для организации своих текстовых данных.
У меня довольно большая таблица, около 10 миллионов записей, представляющихдокументы, которые индексируются уникальным числовым идентификатором (автоинкремент) и полем языка varchar
(например, "en", "de", "es" и т. д.)
select * from table
слишкоммедленный и разрушительный память.В итоге я разбил весь диапазон идентификаторов на более мелкие диапазоны (скажем, по 2000 записей каждый) и обрабатывал каждый из этих меньших наборов записей один за другим с такими запросами:
select * from table where id >= 1 and id <= 1999
select * from table where id >= 2000 and id <= 2999
и так далее ...
Есть ли способ сделать это более эффективно с MySQL и добиться такой же производительности, как при последовательном чтении большого текстового файла корпуса?
Меня не волнует порядок записей, я просто хочу иметь возможность обрабатывать все документы, относящиеся к определенному языку в моей большой таблице.