ускорить SELECT DISTINCT с помощью клавиш - PullRequest
2 голосов
/ 08 августа 2011

Если я использую запрос SELECT DISTINCT для таблицы из 100 строк, где 98 записей таблицы идентичны, а две другие идентичны, будет ли он по-прежнему проходить через все 100 строк только для того, чтобы вернуть 2 разных результата?

Есть ли способ использовать индексирование / ключи и т. Д., Чтобы вместо прохождения всех 100 строк он проходил через 2 строки?

#### EDIT #####

, поэтому я добавил этот индекс:

KEY `column` (`column`(1)),

но потом, когда я сделаю

EXPLAIN SELECT DISTINCT column FROM tablename

все еще говорится, что он проходит все строки, а не только отдельные

Ответы [ 2 ]

6 голосов
/ 08 августа 2011

Создание индекса для столбца или набора столбцов, запрашиваемых с помощью DISTINCT, ускорит запрос.Вместо просмотра каждой строки он будет использовать две записи в индексе.Однако при наличии только 100 строк различие может даже не быть обнаружено.

0 голосов
/ 20 февраля 2012

Я работаю над почти подобной вещью. Я пытаюсь получить различные значения из таблицы с 400Mill строк.

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

У меня есть только 10 различных значений, но я не получил результат даже через 5 минут и убил его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...