В чем разница между кластеризованным и некластеризованным индексами в SQL?

Кластеризованный и некластеризованный индексы (иногда также называемые кластерными и некластерными индексами) в SQL представляют два разных способа организации данных в таблицах и обеспечения быстрого доступа к ним. Вот основные различия между ними:

  1. Кластеризованный индекс (Clustered Index):
    • Кластеризованный индекс определяет физический порядок данных в самой таблице.
    • В каждой таблице может быть только один кластеризованный индекс.
    • Кластеризованный индекс изменяет фактическое расположение строк в таблице так, чтобы они были упорядочены в соответствии с ключевыми значениями индекса.
    • Это означает, что данные в таблице фактически упорядочены на диске в том же порядке, что и в кластеризованном индексе.
    • Кластеризованный индекс обеспечивает быстрый доступ к данным, когда выполнение запросов, которые используют ключевые значения индекса.

Пример: Кластеризованный индекс на столбце “ID” в таблице “orders”.

  1. Некластеризованный индекс (Non-Clustered Index):
    • Некластеризованный индекс не определяет физический порядок данных в таблице.
    • В таблице может быть создано несколько некластеризованных индексов.
    • Некластеризованный индекс создает отдельную структуру данных, которая содержит ссылки на фактические строки данных в таблице.
    • Он обеспечивает быстрый доступ к данным, когда выполнение запросов, которые используют ключевые значения индекса, но не изменяет фактическое расположение строк данных на диске.

Пример: Некластеризованный индекс на столбце “LastName” в таблице “employees”.

Общее сравнение:

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