Разница между кластерным и некластеризованным индексом

Ключевая разница между кластерным и некластеризованным индексом

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

Что такое индекс?

Индекс — это ключ, созданный на основе одного или нескольких столбцов базы данных, который ускоряет выборку строк из таблицы или представления. Этот ключ помогает базе данных, такой как Oracle, SQL Server, MySQL и т. д., быстро найти строку, связанную со значениями ключей.

Два типа индексов:

  • Кластерный индекс
  • Некластерный индекс

Что такое кластерный индекс?

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

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

Что такое некластеризованный индекс?

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

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

Характеристика кластерного индекса

  • Хранение данных по умолчанию и отсортированное
  • Используйте только один или несколько столбцов для индекса.
  • Помогает хранить данные и индекс вместе.
  • Фрагментация
  • Операционный отдел
  • Сканирование кластерного индекса и поиск по индексу
  • Ключевой поиск

Характеристики некластеризованных индексов

  • Хранить только значения ключей
  • Указатели на строки кучи/кластерного индекса
  • Разрешает доступ к дополнительным данным
  • Мост к данным
  • Операции индексного сканирования и индексного поиска
  • Вы можете создать некластеризованный индекс для таблицы или представления.
  • Каждая строка индекса в некластеризованном индексе хранит значение некластеризованного ключа и указатель строки.

Кластеризованный и некластеризованный индекс в SQL: ключевые различия

параметры кластерный Некластеризованный
Использовать для Вы можете сортировать записи и физически хранить кластерный индекс в памяти в соответствии с порядком. Некластеризованный индекс помогает создать логический порядок строк данных и использует указатели для физических файлов данных.
Метод хранения Позволяет хранить страницы данных в конечных узлах индекса. Этот метод индексирования никогда не сохраняет страницы данных в конечных узлах индекса.
Размер Размер кластеризованного индекса довольно велик. Размер некластеризованного индекса невелик по сравнению с кластеризованным индексом.
Доступ к данным Быстрее Медленнее по сравнению с кластерным индексом
Дополнительное дисковое пространство Не требуется Требуется хранить индекс отдельно
Тип ключа По умолчанию первичные ключи таблицы представляют собой кластерный индекс. Его можно использовать с ограничением уникальности таблицы, которое действует как составной ключ.
Главная особенность Кластеризованный индекс может повысить производительность поиска данных. Его следует создавать в столбцах, которые используются в соединениях.

Пример кластеризованного индекса

В приведенном ниже примере SalesOrderDetailID — это кластеризованный индекс. Пример запроса для получения данных

SELECT CarrierTrackingNumber, UnitPrice
FROM SalesData
WHERE SalesOrderDetailID = 6

Пример кластеризованного индекса

Пример некластеризованного индекса

В приведенном ниже примере некластеризованный индекс создается для OrderQty и ProductID следующим образом.

CREATE INDEX myIndex ON
SalesData (ProductID, OrderQty)

Пример некластеризованного индекса

Фоллоwing запрос будет получен быстрее по сравнению с кластеризованным индексом.

SELECT Product ID, OrderQty
FROM SalesData
WHERE ProductID = 714

Пример некластеризованного индекса

Преимущества кластерного индекса

Плюсы/преимущества кластерного индекса:

  • Кластеризованные индексы — идеальный вариант для диапазонов или группировок с запросами типа max, min, count.
  • В этом типе индекса поиск может идти прямо к определенной точке данных, чтобы вы могли продолжать последовательное чтение оттуда.
  • Метод кластерного индекса использует механизм определения местоположения для поиска записи индекса в начале диапазона.
  • Это эффективный метод поиска по диапазону, когда запрашивается диапазон значений ключа поиска.
  • Помогает свести к минимуму передачу страниц и максимизировать количество попаданий в кеш.

Преимущества некластеризованного индекса

Плюсы использования некластеризованного индекса:

  • Некластеризованный индекс помогает быстро извлекать данные из таблицы базы данных.
  • Помогает избежать накладных расходов, связанных с кластеризованным индексом.
  • Таблица может иметь несколько некластеризованных индексов. RDBMS. Таким образом, его можно использовать для создания более одного индекса.

Недостатки кластерного индекса

Вот минусы/недостатки использования кластерного индекса:

  • Множество вставок в непоследовательном порядке.
  • Кластеризованный индекс создает множество постоянных разбиений страниц, включая страницы данных, а также страницы индекса.
  • Дополнительная работа для SQL для вставок, обновлений и удалений.
  • Кластеризованному индексу требуется больше времени для обновления записей при изменении полей в кластерном индексе.
  • Листовые узлы в основном содержат страницы данных в кластерном индексе.

Недостатки некластеризованного индекса

Вот минусы/недостатки использования некластеризованного индекса:

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