У меня есть приложение базы данных в производстве, и все таблицы используют первичные ключи GUID, которые в настоящее время устанавливаются как кластеризованные индексы. Я понимаю, что это плохой дизайн из-за соображений производительности. Я много читал по этой теме, в том числе this great article от Kimberly Tripp.Первичный ключ GUID, отдельный кластерный индексный столбец
Могу ли я улучшить производительность, просто создав автоинкрементный индексный столбец типа INT
и установив его как кластеризованный индекс? Я понимаю из статьи Кимберли, что все некластеризованные индексы (например, мои первичные ключи GUID, если я это сделаю) будут ссылаться на кластеризованный индекс. Но действительно ли это улучшит производительность, если я ищу запись с использованием первичного ключа GUID в предложении WHERE
?
Кроме того, нужно ли заполнять новый столбец для существующих записей в естественном порядке, когда записи были созданы для достижения выигрыша в производительности?
EDIT: Чтобы решить, является ли этот вопрос дубликат this other question: другой вопрос, спрашивает о наилучшей практике в целом относительно соображений эффективности использования первичного ключа GUID. Конкретные подходы не обсуждаются. Мой вопрос, с другой стороны, задает конкретно, добавляет ли индексный индексный индексный индекс типа INT
, чтобы облегчить проблемы с помощью первичного ключа GUID. Кроме того, мой вопрос затем спрашивает, нужно ли мне заполнять новый столбец в их «естественном порядке», чтобы реализовать преимущества, которые, опять же, не рассматриваются в другом вопросе из-за его более высокого уровня общности.
Да, благодаря значительному уменьшению фрагментации благодаря более подходящему ключу кластеров, производительность должна быть лучше. GUID будет уникальным - так что вы всегда будете только вытаскивать одну запись, поэтому, несмотря на то, что есть дополнительный ключевой поиск, со временем, лучшее поведение фрагментации должно быть полезным –
Возможный дубликат [Каковы наилучшие методы использования GUID как первичный ключ, особенно в отношении производительности?] (http: // stackoverflow.com/questions/11938044/what-are-the-best-practices-for-use-a-guid-as-a-primary-key-specific-rega) – AHiggins
@AHiggins - см. мое редактирование. –