假设我声明了一个包含一些列的表变量。
声明@MyContacts表(
//其中的列定义
);
假设我有一个columnA,我如何在SQL Server 2008中对其进行索引。
答案 0 :(得分:5)
如果你有一个足够大的表需要索引,不要在表变量中执行,在临时表中执行它!
表变量有各种限制,包括:
ROLLBACK
对表变量做任何事情,因为它没有记录在事务日志中如果您有足够大的东西需要索引,请将其放在临时表中。
答案 1 :(得分:3)
通过定义主键并创建唯一约束,可以在表变量的声明中隐式地创建表变量的索引。主键表示聚簇索引,而唯一约束表示非聚簇索引。
DECLARE @Users TABLE
(
UserID INT PRIMARY KEY,
UserName varchar(50),
UNIQUE (UserName)
)
有关详细信息,请查看THIS文章。
答案 2 :(得分:1)
declare @YourTempTable table
(
ID int not null primary key,
Name nvarchar(255) null
)
答案 3 :(得分:1)
您可以将其与列定义一起指定;
declare @MyContacts table (columnA int unique nonclustered ...)