Имеет ли столбец первичного ключа значение индекса в этом столбце? Если да, то какой это индекс?Есть ли индекс первичного ключа таблицы?
ответ
Для SQL Server, который, как я считаю, из предыдущих вопросов является тем, что вы используете, когда вы определяете PRIMARY KEY, он автоматически будет иметь индекс в этом столбце, который по умолчанию будет индексом CLUSTERED. Вы можете определить, должен ли он быть индексом NONCLUSTERED или CLUSTERED при создании ограничения.
+1 и FYI для OP: индексы не покрываются ANSI, хотя MySQL и SQL Server используют ту же терминологию. Oracle не различает - это просто индексы. Также re: SQL Server - кластерный индекс создается по умолчанию при определении первичного ключа, но кластерный индекс может быть изменен для связывания других столбцов (столбцов) в таблице. –
Это зависит от базы данных.
Некоторые базы данных требуют или автоматически создают индексы первичных ключей в качестве способа обеспечения уникальности первичного ключа. Другие отлично справляются с полным просмотром таблицы.
Какую базу вы используете?
EDIT:
- SQLServer (версии 7 - 2008) создает индексы или первичные ключи - вы можете контролировать, будет ли она или нет кластерным.
- Старые версии Oracle (8i, 9i) также создают индексы при добавлении уникального ограничения ключа. Более новые версии (10g), похоже, не основаны на тестовом примере, на который я только что посмотрел.
SQL Server 2008 – Shayan
В любой «реальной» базе данных да, имея первичный ключ, имеет уникальный индекс. В некоторых базах данных индекс первичного ключа может/будет кластеризовать и по ключевым значениям.
Да, первичный ключ подразумевает индекс.
Если первичный ключ сгруппирован, индекс будет частью основного файла таблицы. Он не кластеризуется, он будет частью отдельного индексного файла.
Итак, если у меня есть первичный ключ (который обязательно у меня есть) У меня не может быть другого кластеризованного индекса? Потому что возможен только один кластеризованный индекс. Как я могу сказать, что я не хочу, чтобы он был нескромным? – Shayan
Вы можете создать некластеризованный первичный ключ, используя ключевое слово 'nonclustered', см. Http://msdn.microsoft.com/en-us/library/aa258255(SQL.80).aspx – Andomar
Во всех БД, которые я использовал, PRIMARY KEY - это в основном просто УНИКАЛЬНЫЙ индекс.
Я думаю, что это в основном правильно. Итак, +1, чтобы компенсировать необъяснимое понижение: – Andomar
LOL, спасибо Andomar! –
Какой сервер БД? – SLaks
Я использую SQL Server 2008 – Shayan
Пожалуйста, проверьте эту статью http://stackoverflow.com/questions/462477/sql-primary-key-and-index – madatanic