|
|
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
Есть поле с типом данных "uniqueidentifieer" (GUIDE) Оно ключевое, соответсвенно, по нему автоматически был создал кластерный уникальный индекс. А имеет ли смысл делать это поле кластерным? Мне кажется сортировка индекса по этому полю бессмысленна, зачем тогда "напрягать сервер" ? Но по нему очень часто идет обращение. В тоже время есть поле "дата создания" - по нему сортировка хотя бы имеет смысл. В общем каламбурно, но примерно тогда суть такая, если это конечно возможно: 1. Поле GUIDE слелать ключевым (уникальным), но не кластерным 2. По полю "дата создания" сделать кластерный индекс. Будет ли данный подход оптимальным? Ну или хотя бы правильным? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2009, 14:22 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
xdxИмеет ли смысл использовать GUIDE в качестве кластерного индекса? Нет. Мое мнение подкрепляется этим тынцом. Подпишусь :) А подобного рода топиков было немало, это просто один нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2009, 14:57 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
xdx1. Поле GUIDE слелать ключевым (уникальным), но не кластерным 2. По полю "дата создания" сделать кластерный индекс. А первичный ключ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2009, 15:34 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецовxdx1. Поле GUIDE слелать ключевым (уникальным), но не кластерным 2. По полю "дата создания" сделать кластерный индекс. А первичный ключ?Я как-то высказывался в ветке MSSQL по этому поводу. ИМХО, первичные ключи не следует делать кластеризованными. Если на таблицу много ссылок, трудно потом переделать его в некластерный. Я обычно делаю так: создаю индекс некластерным, а потом создаю индекс с названием IX_clst. Если среди столбцов нет более подходящих кандидатов, то этот индекс "вешаю" на столбце PK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2009, 16:43 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
Насколько я понял, речь об MS SQL. xdxЕсть поле с типом данных "uniqueidentifieer" (GUIDE) Оно ключевое, соответсвенно, по нему автоматически был создал кластерный уникальный индекс. Создавайте ключ с указанием NONCLUSTERED. xdxА имеет ли смысл делать это поле кластерным? Мне кажется сортировка индекса по этому полю бессмысленна, зачем тогда "напрягать сервер" ? Но по нему очень часто идет обращение.Если нет более подходящего кандидата, что маловероятно, то на здоровье. 1. Будете избавлены от bookmark lookup при поиске по этому полю. Чисто теоретически будете избавлены от так называемого "hot spot", хотя вряд ли вы с ним встретитесь в принципе, с учётом задаваемых вопросов. В то же время, начиная с версии 2005, новые значения GUID могут быть не только случайными, но и последовательными - NEWSEQUENTIALID(). 2. В пределах страницы никакой явной сортировки не выполняется. Порядок записей определяется во внутреннем массиве смещений страницы данных. 3. В целом же, особого смысла в кластеризации по суррогатным значениям, нет. Смысл кластеризации прежде всего в хранение подобного рядом, а на это впрямую влияет характер типовых запросов к данной таблице. xdxпримерно тогда суть такая, если это конечно возможно: 1. Поле GUIDE слелать ключевым (уникальным), но не кластерным 2. По полю "дата создания" сделать кластерный индекс. Будет ли данный подход оптимальным? Ну или хотя бы правильным? :-)Возможно. Хотя чисто для "сферического коня в вакууме" лучше, возможно, так (GUID) - PRIMARY KEY NONCLUSTERED ("дата создания", GUID) - UNIQUE CLUSTERED Кластерный индекс всегда уникален, если вы сами этого явно не указываете, то к неуникальному значению автоматически будет генерироваться некое дополнение, гарантирующее уникальность для каждой записи. Таким образом, кластерный индекс лучше создавать явно уникальным. Поля кластерного индекса в некластерном индексе используются только один раз, т.е., в указанный выше PRIMARY KEY будет добавлено только значение "дата создания", поле GUID не будет дублироваться. В случае, если бы в кластерный индекс был включено только поле "дата создания", то в PK было бы включено три сущности: GUID, "дата создания" и "unique tail", дополняющий кластерный индекс до уникальности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2009, 16:47 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
xdx, Насколько я помню при сильной конкуренции (т.е. идут интенсивны вставки данных в разных сессиях) за таблицу создание кластерного индекса по guid будет выгодно т.к. позволит снизить конкуренцию за блок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2009, 16:49 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
ChAВозможно. Хотя чисто для "сферического коня в вакууме" лучше, возможно, так (GUID) - PRIMARY KEY NONCLUSTERED ("дата создания", GUID) - UNIQUE CLUSTERED Спасибо. Интересно. А получится ли потом по индексу ("дата создания", GUID) настроить секционирование? Или секционирование легко построится по полю "дата создания" ? Тут ни каких проблем не возникнет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2009, 09:31 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
автор("дата создания", GUID) - UNIQUE CLUSTERED Я бы такой кластерный индекс делал только под растрелом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2009, 09:50 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
SeVaавтор("дата создания", GUID) - UNIQUE CLUSTERED Я бы такой кластерный индекс делал только под растрелом +1. Написано же " для "сферического коня в вакууме" ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2009, 11:33 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
xdxА получится ли потом по индексу ("дата создания", GUID) настроить секционирование? Или секционирование легко построится по полю "дата создания" ? Тут ни каких проблем не возникнет?Так всё в BOL описано. В случае секционирования есть определённые требования. Вот одно из них, самое критичноеавторPartitioning columns must be a part of the primary key of the tableТ.е., надо будет сделать ("дата создания", GUID) - PRIMARY KEY CLUSTERED. И тогда (GUID) может сделать просто UNIQUE, этого достаточно, чтобы организовать по нему ссылочную целостность(FOREIGN KEY), если понадобится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2009, 11:46 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
Спасибо. Что-то это поле GUIDE мне нравится все меньши и меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2009, 13:55 |
|
||
|
Имеет ли смысл использовать GUIDE в качестве кластерного индекса?
|
|||
|---|---|---|---|
|
#18+
xdxЧто-то это поле GUIDE мне нравится все меньши и меньше.А зачем эмоциональная оценка ? У GUID достаточно чёткая область использования, когда без особых усилий нужно получить "уникальный" суррогатный ключ , обладающий определёнными свойствами. В остальных случаях, его применимость не очень оправдана, IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2009, 14:19 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=86&tid=1543153]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 366ms |

| 0 / 0 |
