2013-05-25 3 views
6

Ya, это a duplicate of this. Но я просто нуждаюсь в уточнении на this article по Pinal Dave, в котором говорится следующее:Создает ли SQL Server Non-кластерный индекс по умолчанию

Сценария 4: Primary Key по умолчанию для индекса кластерного с другим индексными по умолчанию для Non-кластерного индекса

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

-- Case 4 Primary Key and Defaults 
USE TempDB 
GO 
-- Create table 
CREATE TABLE TestTable 
(ID INT NOT NULL PRIMARY KEY, 
Col1 INT NOT NULL UNIQUE) 
GO 
-- Check Indexes 
SELECT OBJECT_NAME(OBJECT_ID) TableObject, 
[name] IndexName, 
[Type_Desc] 
FROM sys.indexes 
WHERE OBJECT_NAME(OBJECT_ID) = 'TestTable' 
GO 
-- Clean up 
DROP TABLE TestTable 
GO 

ответ

10

Единственные индексы, которые получают автоматически создаются:

  • в кластерный индекс на первичного ключа (если не указано иное - если вы определяете первичный ключ, чтобы быть NONCLUSTERED, то a некластеризованный будет создан индекс)

  • a un IQUE некластеризованным индекс при применении UNIQUE CONSTRAINT в колонку (или набор столбцов)

2

Просто пишется это - результат примера PINAL Дэйва являются индексы, подобные следующим:

TestTable PK__TestTabl__3214EC2703317E3D CLUSTERED 
TestTable UQ__TestTabl__A259EE55060DEAE8 NONCLUSTERED 

Что можно объяснить следующим образом:

PK кластерный

Если таблица создается с первичным ключом, то это Clustered Table, а кластерный индекс - defaulted to the Primary Key, если вы не указали иначе. (Таблицы без индекса кластерного являются Heaps)

UQ Некластеризованного

SQL делает не обычно создавать некластерные индексы таблицы по умолчанию.

Однако, как Марк указал, потому что таблица имеет столбец с UNIQUE ограничения, (Col1 INT NOT NULL UNIQUE), MS SQL реализует ограничение как уникальный, некластерный индекс на этом столбце.

См. Также: Is the Sql Server Unique Key also an Index?

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