Кластерный / некластеризованный индекс по столбцу уникальных идентификаторов в SQL Server

StackOverflow https://stackoverflow.com/questions/821108

Вопрос

Я прочитал различные вопросы / ответы здесь, которые в основном указывают на то, что кластерный индекс в столбце uniqueidentifier является плохим выбором по соображениям производительности. В любом случае, мне нужно использовать uniqueidentifier в качестве моего первичного ключа, и я НЕ хочу использовать newsequentialid (), потому что сгенерированные значения слишком похожи друг на друга (мне нужно больше случайных идентификаторов, чтобы пользователи не могли [разумно] «угадать» другой идентификатор).

Итак, как лучше всего индексировать этот ПК? Хотя кластеризованный индекс в этом столбце не идеален, он лучше, чем «уникальный, некластеризованный» индекс?

Я использую SQL Server 2005.

Это было полезно?

Решение

Прежде всего, если вы пытаетесь использовать NEWID () для достижения случайности (больше, чем просто случайный взгляд), у вас проблемы.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top