Как создать некластеризованный индекс в Create Table? - PullRequest
18 голосов
/ 22 апреля 2010
Create table FavoriteDish    
(    
FavID int identity (1,1) primary key not null,    
DishID int references Dishes(DishID) not null ,    
CelebrityName nvarchar(100)  nonclustered not null     
)

В результате

Неверный синтаксис рядом с ключевым словом «некластеризован».

Я сослался на справку MSDN для синтаксиса создания таблицы. Я не уверен, что здесь не так.

Ответы [ 2 ]

19 голосов
/ 22 апреля 2010

В справке по книгам в Интернете упоминается ключевое слово CLUSTERED, но оно относится только к ограничениям UNIQUE или PRIMARY KEY. Оба эти ограничения создают индекс, и вы можете указать, должен ли этот индекс быть кластеризованным или некластеризованным.

Этот синтаксис нельзя использовать для создания стандартного некластеризованного индекса.

Create table FavoriteDish    
(    
FavID int identity (1,1) primary key not null,    
DishID int references Dishes(DishID) not null ,    
CelebrityName nvarchar(100)   constraint ux_CelebrityName unique NONCLUSTERED not null     
)
14 голосов
/ 22 апреля 2010

Удалите это некластеризованное ключевое слово и используйте оператор CREATE INDEX, чтобы добавить индекс к этой таблице, документацию по нему можно прочитать в:

http://msdn.microsoft.com/en-us/library/ms188783.aspx

Синтаксис здесь:

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON <object> ( column [ ASC | DESC ] [ ,...n ] ) 
    [ INCLUDE ( column_name [ ,...n ] ) ]
    [ WHERE <filter_predicate> ]
    [ WITH ( <relational_index_option> [ ,...n ] ) ]
    [ ON { partition_scheme_name ( column_name ) 
         | filegroup_name 
         | default 
         }
    ]
    [ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ]

[ ; ]

Код здесь:

CREATE NONCLUSTERED INDEX index_clustered ON FavoriteDish(CelebrityName asc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...