На этой неделе мы вернемся к обсуждению баз данных на основе SQL. Здесь я собираюсь обрисовать в общих чертах, что такое индекс базы данных.

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

Кластерный индекс - это индекс, который меняет порядок хранения данных. Больше всего похож на телефонную книгу (помните?); вы идете в S и находите меня (Шапиро) рядом с моим номером телефона. Если вам нужно найти номер Сойера или Смита, вы можете просто просмотреть ближайшие страницы.

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

Некластеризованный индекс - это индекс, в котором порядок в индексе не соответствует порядку таблицы на диске. Это больше похоже на указатель учебника - вы переходите к S и видите, что Шапиро указывает на страницу 87, Сойер указывает на страницу 208, а Смит указывает на страницу 145. Вам все равно придется открыть страницу 87 в книге (памяти), чтобы Найди меня.

Некластеризованные индексы обычно содержат только данные проиндексированного столбца и указатель на то место в памяти, где находятся остальные строки. Индексированный столбец может быть любым, каким вы хотите, поэтому в конечном итоге это будут столбцы, которые вы часто используете в JOIN, WHERE и ORDER BY.

Вы можете включить несколько столбцов в свой некластеризованный индекс, но это может снизить производительность, поэтому вы должны спроектировать свой индекс таким образом только в том случае, если вам потребуется дополнительная информация для выполнения ваших запросов. (Если бы и я, и моя сестра были упомянуты в учебнике, чтобы найти меня, вам нужно было бы ограничить свой поиск, чтобы найти страницу, ГДЕ FirstName = Laura AND LastName = Shapiro.)

Надеемся, что преимущества использования индекса на этом этапе очевидны - улучшенная скорость запроса / время выборки и простая сортировка. Однако есть и недостатки. А именно: это увеличит время изменения (вставки / обновления / удаления) записи БД и может занять дополнительное место на диске.

Первоначально опубликовано на professionalhaps.tumblr.com.