Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Индексы: Занимают ли место поля кластерного индекса?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
1. Можно ли утверждать, что если поля в кластерном индексе, то их не надо включать ни в какой другой не-кластерный индекс, даже если рука тянется включить?

2. Если все-таки такое поле включено в не-кластерный индекс, то занимает ли оно место в таком индексе или игнорируется сервером?
13 авг 15, 14:09    [18013095]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> 2. Если все-таки такое поле включено в не-кластерный индекс, то занимает ли оно место в таком индексе или игнорируется сервером?

дополнительного места из-за явного включения в некластерный индекс столбцы кластерного занимать не будут.
13 авг 15, 14:21    [18013184]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
daw
> 2. Если все-таки такое поле включено в не-кластерный индекс, то занимает ли оно место в таком индексе или игнорируется сервером?

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


Ок.
А стоит ли переделать такие индексы, чтобы они не включали поля кластерного?
Или это чисто формальное включение и разницы нет?
13 авг 15, 14:26    [18013235]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
"Включено" - речь про include или про ключ некластерного индекса?
13 авг 15, 14:26    [18013237]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гавриленко Сергей Алексеевич
"Включено" - речь про include или про ключ некластерного индекса?


Оба случая интересуют, по большому счету
13 авг 15, 14:28    [18013251]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Winnipuh
Гавриленко Сергей Алексеевич
"Включено" - речь про include или про ключ некластерного индекса?


Оба случая интересуют, по большому счету


проверить же легко...зачем гадать!?

1) нельзя...всё зависит от запросов и что за некластерный индекс
2) опять же, всё зависит от индекса...т.к. если индекс не уникальный, то кластерный присутствует на ВСЕХ уровнях некластерного индекса...даже не листовом
13 авг 15, 14:33    [18013289]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Winnipuh
Гавриленко Сергей Алексеевич
"Включено" - речь про include или про ключ некластерного индекса?

Оба случая интересуют, по большому счету
В include смысла добавлять нет -- поля кластерного и так будут на листовом уровне.

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

Сообщение было отредактировано: 13 авг 15, 14:44
13 авг 15, 14:35    [18013313]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Гавриленко Сергей Алексеевич
А вот если добавить поле из ключа кластерного индекса в ключ некластерного, то это поле станет присутствовать еще и на промежуточных уровнях некластеного индекса.


если некластерный неуникальный, то кластерный будет присутствовать на промежуточных уровнях тоже
13 авг 15, 14:48    [18013407]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4900
Winnipuh
1. Можно ли утверждать, что если поля в кластерном индексе, то их не надо включать ни в какой другой не-кластерный индекс, даже если рука тянется включить?
Winnipuh
Нет

2. Если все-таки такое поле включено в не-кластерный индекс, то занимает ли оно место в таком индексе или игнорируется сервером?


Занимает

Пример. Таблица связи многие-ко-многим.

CREATE TABLE A_TO_B(A_ID INT NOT NULL, B_ID INT NOT NULL)


Может быть целесообразным иметь как индекс

(A_ID , B_ID) , так и (B_ID, A_ID)

или

(A_ID) Include (B_ID) , и (B_ID) Include (A_ID)
13 авг 15, 14:53    [18013450]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
o-o
Guest
a_voronin,

да не про то же он спросил, все уже поняли и ответили.
вопрос был, если в таблице с колонками A, B, C, D
кластерный по колонкам A, B
и теперь создаем некластерный A, B, D
спрашивается,
есть ли разница, создать с ключом D или A, B, D
в смысле объема.
и ответ:
на листовом A, B продублирован не будет,
а присутствовать будет в обоих случаях;
на нелистовых уровнях A, B включаются в некластерный, если его ключ (D) неуникальный,
разумеется, тоже всего 1 раз
и разница только в случае "уникальный некластерный".
тогда на промежуточных уровнях A, B будет присутствовать только если это часть ключа некластерного (случай A, B, D)
----
а вы про что ответили? у вас вообще таблица-куча
13 авг 15, 15:18    [18013628]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
o-o
Guest
с порядком полей у меня что?
дурдом
везде прошу читать D и D, A, B
13 авг 15, 15:22    [18013652]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
aleks2
Guest
Winnipuh
1. Можно ли утверждать, что если поля в кластерном индексе, то их не надо включать ни в какой другой не-кластерный индекс, даже если рука тянется включить?

2. Если все-таки такое поле включено в не-кластерный индекс, то занимает ли оно место в таком индексе или игнорируется сервером?


1. Что за бред? Все зависит от конкретных потребностей.

2. Любой индекс - суть новая таблица, состоящая из полей индекса + include-полей. Все поля, включенные в индекс, занимают место. Независимо от включены они в другой индекс или нет.
13 авг 15, 17:06    [18014382]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34705
1. Можно ли утверждать, что если поля в кластерном индексе, то их не надо включать ни в какой другой не-кластерный индекс, даже если рука тянется включить?

нет, нельзя. можно так утверждать только относительно первичного ключа или уникального индекса.


2. Если все-таки такое поле включено в не-кластерный индекс, то занимает ли оно место в таком индексе или игнорируется сервером?


ну разумеется два раза не хранится. но только не у всех таблиц есть кластерный индекс.
13 авг 15, 23:01    [18015635]     Ответить | Цитировать Сообщить модератору
 Re: Индексы: Занимают ли место поля кластерного индекса?  [new]
aleks2
Guest
MasterZiv
2. Если все-таки такое поле включено в не-кластерный индекс, то занимает ли оно место в таком индексе или игнорируется сервером?


ну разумеется два раза не хранится. но только не у всех таблиц есть кластерный индекс.


Вы бредите.

primary key clustered (A, В)

unique (В)

unique (A)

Надо быть оптимистом, чтобы верить A и B хранятся только в одном экземпляре.

Даже так

primary key clustered (A)

(non)unique (А)

(non)unique (A)

будет ТРИ экземпляра A храниться.
14 авг 15, 05:19    [18016015]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить