2010-09-03 2 views
2

Работают ли кластерные и некластеризованные индексы на B-Tree? Я читал, что кластеризованные индексы влияют на то, как данные физически хранятся в таблице, тогда как с некластеризованными индексами создается отдельная копия столбца и сохраняется в отсортированном порядке. Кроме того, Sql Server по умолчанию создает кластерные индексы для первичного ключа.Confused между кластеризованным и некластеризованным индексом. Содержит 5 сомнений

это значит:

1) Non кластерных индексов занимают больше места, чем кластерные индексы, так как отдельный экземпляр столбца хранятся в кластерных?

2) Как работает кластерный и некластеризованный индекс, когда у нас есть первичный ключ, основанный на двух столбцах, говорят ... (StudentName, Marks)?

3) Есть ли только 2 типа индексов? Если да, то что такое растровые индексы? Я не могу найти такой тип индекса в Sql Server Management Studio, но в моей книге datawarehousing упоминаются все эти типы.

4) Создает кластерный или некластеризованный индекс для эффективного использования первичного ключа?

5) Предположим, мы создаем кластерный индекс по имени. Данные физически хранятся в отсортированном имени заказа, а затем создается новая запись. Как новая запись найдет место в таблице?

Заранее спасибо :)

ответ

2

Индексы представляют собой структуры, хранящиеся отдельно от фактических и просто страниц данных содержат указатели на страниц данных. В индексах SQL Server есть B-деревья.

Кластеризованные индексы сортируют и хранят данные в таблице в соответствии с столбцами, определенными для индекса. В SQL Server 2005 вы можете добавить дополнительные столбцы в индекс, поэтому это не должно быть проблемой, если у вас есть составные первичные ключи. Вы можете думать о кластеризованном индексе, таком как набор шкафов с папками. В первой ничьей у вас есть документы, начинающиеся с буквы A, и в первой папке этой ничьей у вас могут быть документы, начиная с AA до AC и так далее. Чтобы найти «Паук», вы можете перейти прямо к S-ничьей и найти папку, содержащую «SP», и быстро найти то, что ищете. Но очевидно, что если вы отсортируете все документы физически одним индексом, то вы не сможете физически сортировать один и тот же набор документов по другому индексу. Следовательно, только один кластеризованный индекс на таблицу.

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

  1. Да, индекс занимает место, но не настолько, насколько исходная таблица. Вот почему вы должны тщательно выбирать свои индексы. Существует также небольшой успех для операций обновления, поскольку индекс должен поддерживаться.

  2. В вашей книге будут указаны все теоретические типы индексов. Индексы растровых изображений полезны в приложениях для хранения данных или для данных, которые имеют несколько различных значений, например, дни недели и т. Д. Поэтому они обычно не используются в вашей базовой СУБД. Я знаю, что у Oracle есть некоторые реализации, но я мало что знаю об этом.

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

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

+0

В интервью интервьюер спросил меня, почему некластеризованное индексирование не занимает какое-либо место на диске? Я не знаю, был ли это трюк от него. Не могли бы вы рассказать об этой концепции. Заранее спасибо –

+0

@NithinGangadharan, потому что кластеризованный индекс все еще хранится в B-Tree и имеет промежуточные уровни, требующие пространства. Наверное, это был момент. – levi

+0

@levi Большое спасибо за ваш ответ. Поэтому вы считаете, что даже некластерный индекс занимает пространство, верно? , но интервьюер постоянно отклонял мой ответ, поэтому я смущен. Наверное, это может быть просто хитростью. –

Смежные вопросы