+1. Немного запутанный, но я согласен с основной предпосылкой. Извлечение строк с диска / памяти не является узким местом. Передача данных является узким местом, поэтому меньше строк = быстрее.

я есть база данных с таблицей «ссылки» с 600 миллионами строк в SQLite. В базе данных есть 2 столбца - столбец src и столбец dest. На данный момент нет показателей.

Между src и dest существует довольно много общих значений, но также есть и дублированные строки.

Первое, что я пытаюсь сделать, это удалить все дублирующиеся строки, а затем выполнить некоторую дополнительную обработку результатов, однако я столкнулся с некоторыми странными проблемами.

Во-первых,SELECT * FROM links WHERE src=434923 AND dest=5010182, Теперь это возвращает один результат довольно быстро, а затем выполняется довольно долго, так как я предполагаю, что он выполняет табличное сканирование для остальных 600-метровых строк.

Однако, если я сделаюSELECT DISTINCT * FROM linksзатем он сразу же начинает возвращать строки очень быстро. Вопрос в том, как это возможно? Конечно, для каждой строки строка должна сравниваться со всеми другими строками в таблице, но для этого потребуется табличное сканирование оставшихся строк в таблице, котороеДОЛЖЕН занимает много времени!

Есть идеи почемуSELECT DISTINCT это намного быстрее, чем стандартSELECT?

Ответы на вопрос(0)

Ваш ответ на вопрос