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

Просто для знаний в вопросе интервью, и мои знания.

SQL - разница между Cluster а также Non-cluster index?

5 ответов

Решение

Ссылка с описанием двух.

http://www.mssqlcity.com/FAQ/General/clustered_vs_nonclustered_indexes.htm

http://www.sql-server-performance.com/articles/per/index_data_structures_p1.aspx

Разница заключается в физическом порядке записей в таблице относительно индекса. Кластерный индекс физически упорядочен таким образом в таблице.

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

1 Кластерный индекс - это форма таблиц, которые состоят из столбцов и строк.
2 Кластерный индекс существует на физическом уровне
3 Сортирует данные на физическом уровне
4 Работает на полную таблицу
5 Существует целая таблица в виде отсортированных данных. 6 Таблица может содержать только один кластерный индекс.

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

1 Некластерный индекс представляет собой отчет о таблицах.
2 Они созданы не на физическом уровне, а на логическом уровне
3 Не сортирует данные на физическом уровне
4 Таблица имеет 255 некластеризованных индексов
5 Таблица имеет много некластеризованных индексов.
6 Это работает на порядок данных

Разница кластерного индекса и некластерного индекса:

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

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

  • Только один на стол
  • Быстрее читать, чем не кластеризовано, поскольку данные физически хранятся в порядке индекса

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

  • Может использоваться много раз за стол
  • Быстрее для операций вставки и обновления, чем кластерный индекс

Оба типа индекса улучшат производительность при выборе данных с полями, которые используют индекс, но замедляют операции обновления и вставки.

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

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

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

В SQL Server есть два типа индексов:

  1. Кластерный индекс
  2. Некластерный индекс

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

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

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

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

Воспользуйтесь ссылкой, чтобы прочитать полную информацию

Другие вопросы по тегам