Что и зачем индексировать базу данных?

Когда ваша база данных или таблица увеличиваются в размерах, запросы будут выполняться намного дольше. Индексирование базы данных — это способ замедлить медлительность обработки. Это позволяет запросу эффективно извлекать данные из базы данных. Это помогает улучшить скорость обработки.

Индекс — это копия выбранных столбцов данных из таблицы, в которой можно выполнять поиск. Подумайте об указателе в конце книги. Концепция индексации базы данных похожа на это.

Давайте посмотрим на пример этой колоды карт. В одной колоде 52 карты четырех мастей. Предположим, вы пытаетесь найти 8 червей из случайно перетасованной колоды. Если вам повезет, вы сможете легко его найти, а если нет, вам, возможно, придется перевернуть все карты, чтобы найти его. Таким образом, среднее число бросков равно 26.

Однако, если мы разделим карты на четыре стопки по масти и перетасуем каждую стопку случайным образом, это будет быстрее, чем случайная перетасовка всей стопки. Во-первых, найдите правильную масть, которая является червовой. Это будет первая попытка или четвертая попытка, поэтому, допустим, среднее значение равно 2. Тогда вы можете перевернуть только 13 карт, чтобы найти 8, в среднем 7 подбрасываний. В этом случае вам нужно в среднем всего 9 бросков, чтобы найти 8 червей из колоды карт. Если мы разделим карты на большее количество стопок, процесс поиска будет более быстрым.

Методы индексирования

Существуют некластеризованные, кластеризованные и кластерные методы.

Некластеризованные — данные представлены в произвольном порядке, но логический порядок определяется индексом. Это означает, что физический порядок строк не совпадает с порядком индекса. В таблице базы данных может быть более одного некластеризованного индекса.

Кластеризованный — кластеризация изменяет блок данных в определенном порядке в соответствии с индексом, в результате чего данные строки сохраняются в определенном порядке. Поэтому для данной таблицы базы данных можно создать только один кластерный индекс. Кластеризованные индексы могут значительно увеличить общую скорость поиска, но обычно только в том случае, если доступ к данным осуществляется последовательно в том же или обратном порядке, что и кластеризованный индекс, или когда выбран диапазон элементов.

Кластер. Когда несколько баз данных и несколько таблиц объединены, это называется кластером (не путайте с кластеризованным индексом). Записи для таблиц, совместно использующих значение кластерного ключа, должны храниться вместе в одних и тех же или соседних блоках данных. Это может улучшить объединение этих таблиц по ключу кластера, поскольку совпадающие записи хранятся вместе, и для их обнаружения требуется меньше операций ввода-вывода.

ссылка — https://www.essentialsql.com/what-is-a-database-index/