Я пытаюсь получить некоторые наиболее часто встречающиеся значения из таблицы SQLite, содержащей несколько сотен миллионов строк.
Запрос пока может выглядеть так:
SELECT value, COUNT(value) AS count FROM table GROUP BY value ORDER BY count DESC LIMIT 10
В поле value
есть индекс.
Однако с предложением ORDER BY запрос занимает так много времени, что я никогда не видел его конца.
Что можно сделать, чтобы радикально улучшить такие запросы для такого большого объема данных?
Я попытался добавить предложение HAVING (например, HAVING count> 100000), чтобы уменьшить количество сортируемых строк, но безуспешно.
Обратите внимание, что меня не волнует время, необходимое для выполнения вставки (оно все еще должно быть разумным, но приоритет отдается выбору), поэтому я открыт для решений, предлагающих вычисления во время вставки. .
Заранее спасибо,