nesco, писал(а):
только концепция не совсем понятна была с одинаковыми значениямиИндексы лучше всего создавать по столбцам с большим числом уникальных значений в них, а также по столбцам, которые при использовании в качестве фильтров в выражениях WHERE возвращают небольшое количество строк.
Например не следует создавать индексы по столбцу status
FAM | STATUS |
Петров | Женат |
Иванов | Разведен |
Сидоров | Женат |
Иволгин | Разведен |
Сидоренко | Холост |
Кличко | Женат |
Митин | Женат |
... | ... |
Яковлев | Холост |
Использование индекса, построенного на данных столбца STATUS
для классификации, не является оправданным. Например, следующим запрос
SELECT * FROM tbl WHERE STATUS = 'Женат'
вызывает непрерывный поток обращений от таблицы к индексу и наоборот. Из-за того, что условие WHERE STATUS = 'Женат' возвращает большой объем данных, серверу базы данных придется постоянно читать сначала данные из индекса, затем соответствующую строку из таблицы и т. д. В данном случае гораздо более эффективным было бы простое сканирование всех данных таблицы, поскольку значительная ее часть все равно должна быть прочитана.