Можно создать дубликат:
SQL — How is DISTINCT so fast without an index?Как SELECT DISTINCT так быстро?
Привет,
У меня есть база данных с таблицей под названием 'ссылки' с 600 миллионами строк в ней в SQLite. В базе данных есть 2 столбца - столбец «src» и столбец «dest». В настоящее время нет индексов.
Существует множество общих значений между src и dest, но также справедливое количество дублированных строк.
Первое, что я пытаюсь сделать, это удалить все повторяющиеся строки, а затем выполнить некоторую дополнительную обработку результатов, однако я столкнулся с некоторыми странными проблемами.
Во-первых, SELECT * FROM ссылки WHERE src = 434923 И dest = 5010182. Теперь это возвращает один результат довольно быстро, а затем занимает довольно много времени для запуска, поскольку я предполагаю, что он выполняет таблицы в остальных 600-метровых рядах.
Однако, если я делаю SELECT DISTINCT * FROM ссылок, он сразу же начинает быстро возвращать строки. Вопрос в том, как это возможно? Разумеется, для каждой строки строка должна сравниваться со всеми остальными строками в таблице, но для этого потребуются таблицы остальных оставшихся строк в таблице, которые СЛЕДУЕТ требует возраста!
Любые идеи, почему SELECT DISTINCT намного быстрее, чем стандартный SELECT?
Почему вы задаете точно такой же вопрос снова и из двух разных учетных записей с тем же именем ??? –
Чтобы быть абсолютно честным, я понятия не имею. Я попытался опубликовать вопрос до этого, но получил ошибку с серверов здесь. Затем я попытался найти исходный вопрос, но он не был зарегистрирован под моей учетной записью (это все еще не так) и искал его (не смог найти), поэтому я полагал, что он не был отправлен. Извиняюсь за ошибку. –