2015-02-04 2 views
1

Глядя на это сообщение:присоединяется и т.д. с GUID в качестве первичного ключа на SQL Server

[What are the best practices for using a GUID as a primary key, specifically regarding performance?

Я понимаю, что если я хочу использовать GUID в качестве первичного ключа, то это должно быть некластерный pk, а затем создайте кластерный int уникальный индекс (autoinc).

Я просто хочу подтвердить, что при установке выше всех соединений все равно будут работать как обычно, т.е. таблицы относятся к полю первичного ключа GUID? Кроме того, казалось бы, что уникальное индексное поле не будет иметь никакого отношения к моему приложению, и я бы просто проигнорировал это полностью в любых запросах/вставках/обновлениях?

ответ

2

Нет смысла создавать кластерный индекс на монотонно увеличивающемся числовом поле в вашей таблице, если вы не планируете использовать это поле для доступа к данным.

Предлагаю вам прочитать this post на DBA.SE, чтобы обсудить кластерные и некластеризованные первичные ключи.

+0

Я подозревал, что это может быть так. У меня нет выбора, так как мой pk - это руководство, которое ДОЛЖНО быть некластеризованным, отлично. Если я не укажу на int уникальное поле индекса, хотя это означает, что таблица не будет иметь кластеризованного индекса, и, видимо, каждая таблица должна иметь кластеризованный индекс: https://msdn.microsoft.com/en-us/library/ms186342(v=sql .105) .aspx –

+1

@A_L - Каждая таблица, вероятно, должна иметь кластеризованный индекс, но не если вы не собираетесь использовать ее ни для чего. Главной точкой кластерного индекса является эффективность доступа. Если вы не используете кластеризованный индекс для доступа (когда-либо), тогда действительно не так много смысла в его использовании. –

Смежные вопросы