Сначала я думаю, что мы должны охватить, что такое фактический индекс.Обычно в СУБД индексы реализуются с использованием варианта B-дерева (вариант B + является наиболее распространенным).Короче говоря, подумайте о бинарном дереве поиска, оптимизированном для хранения на диске.Результатом поиска ключа в B-дереве обычно является первичный ключ таблицы.Это означает, что если поиск в индексе завершен, и нам нужно больше данных, чем имеется в индексе, мы можем выполнить поиск в таблице, используя первичный ключ.
Пожалуйста, помните, что когда мы думаем о производительности дляСУБД, мы обычно измеряем это в обращениях к диску (я решаю игнорировать блокировку и другие проблемы здесь), а не так много процессорного времени.
Наличие некластеризованного индекса означает, что фактический способ данных в таблицеХранимое значение не имеет отношения к ключу индекса - тогда как кластеризованный индекс указывает, что данные в таблице будут отсортированы (или кластеризованы) по ключу индекса - поэтому в таблице может быть только один кластеризованный индекс.
2) Возвращаясь к нашей модели измерения производительности - если индексный ключ имеет небольшую ширину (умещается в небольшое количество байтов), это означает, что на каждый извлекаемый нами блок дисковых данных мы можем поместить больше ключей - и, таким образом, выполнять поиск вB-дерево намного быстрее, если вы измеряете дисковый ввод-вывод.
3) Я попытался объяснить это далее - к сожалению, у меня нет никаких графиков или рисунков, чтобы указать это - надеюсь, кто-то еще может прийти и поделиться ими.
4) Если вывыполняется запрос, например, так:
SELECT something, something_else FROM sometable t1 WHERE akey = 'some value'
В таблице с индексом, определенным так:
CREATE INDEX idx_sometable_akey ON sometable(akey)
Если у sometable есть много строк, где akey равно 'некоторому значению«это означает, что много поисков как в индексе, так и в фактической таблице для получения значений что-то и что-то.Принимая во внимание, что если есть большая вероятность, что эта фильтрация возвращает несколько строк, это также означает меньшее количество обращений к диску.
5) См. Более раннее объяснение
Надеюсь, это поможет:)