powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объясните, пожалуйста, за кластерные и некластерные индексы.
7 сообщений из 7, страница 1 из 1
Объясните, пожалуйста, за кластерные и некластерные индексы.
    #40083143
sysn1k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Мозг кипит. Прочитал достаточное количество статей по кластеризации индексов и понял, что я так и не могу усвоить разницу.

Понял, что кластерный индекс - это первичный ключ БД. С помощью кластерного индекса таблица упорядочена и имеет уникальный столбец, что не дает спутать с другой строкой и поиск осуществляется по O(log n). Отсюда следует, что кластерный индекс в таблице может быть только один. Но я не могу построить в голове необходимость некластерного индекса.

Некластерный индекс нужен, чтобы мы могли вставить новый индекс в таблицу (для ускорения поиска), которая уже имеет первичный ключ (кластерный индекс)? Пример:
Мы имеем таблицу, которая содержит номер карты, номера транзакций покупок. Все покупки уникальные. Значит этим покупкам мы даем первичный ключ (кластерный индекс). Мы получаем 1 млн уникальных записей. Но нам известно, что в данной таблице находится только 5 уникальных номеров карт . Значит на эти номера карт мы можем создать новый индекс, чтобы ускорить поиск. Этот индекс будет являться некластарным индексом (т.к. первичный ключ уже есть)?

Или все сложнее?
...
Рейтинг: 0 / 0
Объясните, пожалуйста, за кластерные и некластерные индексы.
    #40083151
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sysn1k
Или все сложнее?

Все проще.
Некластерный индекс - это точно такая же таблица, как кластерный индекс, но содержащее меньшее количество полей, возможно - более узкий набор данных (если это фильтрованный индекс), и упорядоченная по другому кластерному индексу . И еще - в каждой строке такой таблицы - есть отсылка на кластерный индекс исходной таблицы.
Кластерный и некластерный индексы и их консистентность - поддерживаются автоматически, и прозрачно для пользователя.
Дбэнжин использует некластерные индексы взамен кластерных всегда, когда обнаруживает, что некластерный индекс "легче" кластерного и что он отсортирован так, как требуется в запросе, ну, плюс-минус.
Нет, нюансов, конечно много, но примерно так.
Кластерный индекс - это механизм хранения таблицы в базе.
Собственно поэтому кластерный индекс у таблицы может быть только один.
Но не беда!
Можно наделать копий данных, и организовать их в точно такой же кластерный индекс, и хранить его рядом.
Авось, для каких то запросов окажется удобнее манипулировать не основной структурой с данными, а рядомлежащей производной.
:-)
...
Рейтинг: 0 / 0
Объясните, пожалуйста, за кластерные и некластерные индексы.
    #40083174
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysn1k,

первичный ключ не имеет отношения к кластерному индексу. Вы начали читать книгу с середины. Попробуйте ее прочесть сначала и начать с принципов организации реляционных данных. Узнайте, что такое атрибут, кортеж, отношение. Узнайте, какие условия должны быть соблюдены для формирования данных в виде отношения. Узнайте, что такое индексирование и как оно работает. Потом переходите к понятию кластерного индекса.
...
Рейтинг: 0 / 0
Объясните, пожалуйста, за кластерные и некластерные индексы.
    #40083254
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
sysn1k,

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


Чо правда, фсе это надо знать, шобы постичь кластерный индекс?

ЗЫ. Кластерный индекс = физический порядок хранения строк в таблице.
...
Рейтинг: 0 / 0
Объясните, пожалуйста, за кластерные и некластерные индексы.
    #40083259
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Владислав Колосов
sysn1k,

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


Чо правда, фсе это надо знать, шобы постичь кластерный индекс?

ЗЫ. Кластерный индекс = физический порядок хранения строк в таблице.

Конечно, умнее было бы знать, чем думать, что "физический порядок хранения строк в таблице" и "кластерный индекс" - это всегда слова-синонимы.
И тем, более, что как знание, так и не знание - образования не требует.
По крайней мере, выходящего за пределы начальной школы.
...
Рейтинг: 0 / 0
Объясните, пожалуйста, за кластерные и некластерные индексы.
    #40083285
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
aleks222
пропущено...


Чо правда, фсе это надо знать, шобы постичь кластерный индекс?

ЗЫ. Кластерный индекс = физический порядок хранения строк в таблице.

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

Да-да, ты ишо про перемещенные сектора диска вспомни.

ЗЫ. Надувать щеки и делать из тривиальных вещей заумные - каждый может.
...
Рейтинг: 0 / 0
Объясните, пожалуйста, за кластерные и некластерные индексы.
    #40083735
Kostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все совсем просто.

Кластерный индекс это сама таблица, организованная в индекс (сбалансированное дерево). На листьях дерева - все данные.

Некластерный индекс это подобное же сбалансированное дерево, но на листьях - значение из кластерного, если он есть или физическое положение записи, если его нет. + значения Included.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объясните, пожалуйста, за кластерные и некластерные индексы.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]