index
Что это объект базы данных, создаваемый с целью повышения производительности выполнения запросов Индекс формируется из значений одного или нескольких столбцов таблицы и указателей на соответствующие строки таблицы и, таким образом, позволяет находить нужную строку по заданному значению.
Зачем для быстрого поиска строк по условию WHERE, для уменьшения числа отбираемых строк (выбирается индекс, по которому отсеивается максимальное число строк), для получения строк из других таблиц во время объединений (JOIN), для поиска минимального/максимального (MIN() или MAX()) значения в столбце (эти константы сохраняются при индексировании), для быстрой сортировки/группировки таблицы по проиндексированным столбцам.
За счет чего
B-tree с точки зрения внешнего логического представления, сбалансированное сильно ветвистое дерево во внешней памяти. Сбалансированность означает, что длина пути от корня дерева к любому его листу одна и та же. Ветвистость дерева это свойство каждого узла дерева ссылаться нa большое число узлов-потомков. Поиск в B-дереве это прохождение от корня к листу в соответствии с заданным значением ключа.
Индексы в MySQL PRIMARY KEY, UNIQUE, INDEX, FULLTEXT.
Рекомендации Индексировать надо столбцы для поиска, сортировки, группировки. Учитывайте мощность значений в столбце. Индексируйте минимальные по длине значения (и только важные части строк). Пользуйтесь преимуществом крайнего левого индекса (для многостолбцовых индексах). Не делайте слишком много индексов.
Манипуляции с индексами Создание: CREATE INDEX `name` ON `table1` (`col1`, `col2`,...); Удаление: DROP INDEX `name` ON `table1`;