Выберите много строк в столбце с низким уровнем мощности в SQLite - PullRequest
0 голосов
/ 24 октября 2019

У меня есть таблица в SQLite с очень большим количеством строк, и мне часто приходится выбирать все строки на основе двоичного столбца с примерно равным разделением (например, мужской / женский). В запросе нет других условий, которые должны быть выполнены. Я понял, что индексировать в этом случае нехорошо, но есть ли другой способ сделать это быстро? Что-то вроде сортировки таблицы? Думаю, кроме создания двух отдельных таблиц.

РЕДАКТИРОВАТЬ: если бы не было в SQLite, было бы возможно в другой СУБД на основе SQL?

1 Ответ

0 голосов
/ 25 октября 2019

Я понял, что в данном случае индексировать нехорошо

В таких вопросах всегда есть плюсы и минусы, поэтому очень важен вес, который вы придаетекаждый из них. Другими словами, часто желательно проводить собственную экспертизу, а не полагаться на чьи-то эмпирические правила.

В мои тайминги базы данных SQLite с 1 миллионом строк и двоичным столбцом, равномерно распределенным между 0 и1 с, SELECT COUNT(*) WHERE binary = 0; значительно ускорился с индексом. Вот времена u + s:

   without an index: 0.06 secs
   with an index:    0.04 secs

Для 10-метровых рядов разница была еще более выраженной.

...