AA.*_*.SC 6 index sql-server sql-server-2008-r2
我们有两列is_unique和is_unique_constraint唯一的约束sys.indexes,我想澄清一些基于这两列的概念
fill factor属性值之外,两种类型的索引的创建语句是相同的还是我遗漏了什么? 何时is_unique=1 is_unique_constraint =0然后删除索引的语句是
DROP INDEX [index name] ON [dbo].[TableName] WITH ( ONLINE = OFF )
何时is_unique=1 is_unique_constraint =1然后删除索引的语句是
ALTER TABLE [dbo].[TableName] DROP CONSTRAINT [IndexName]
为什么呢?
我们在哪里使用唯一索引和唯一约束,最佳实践是什么?
事实上,唯一约束和唯一索引之间没有实际区别。
sys.objects会发现唯一约束被列为约束对象,查询时可以找到其相关索引,并sys.indexes在其中进行了标记。另一方面,对于唯一索引,值将为零 (0)。is_unique = 1is_unique_constraint = 1is_unique_constraintFILLFACTOR, PAD_INDEX, IGNORE_DUP_KEY, DROP_EXISTING, and STATISTICS_NORECOMPUTE.is_unique_constraint = 1,必须通过 DROP CONSTRAINT 语法而不是 DROP INDEX 来删除它,因为该索引与唯一约束(对象)关联,因此必须删除 CONSTRAINT,索引将自动删除。 作为最佳实践,如果需要唯一性,则始终应用唯一约束,而不是仅创建唯一索引。这样您就不会意外删除唯一索引。此外,您还可以轻松记录所有应用的约束。
http://technet.microsoft.com/en-us/library/aa224827(v=sql.80).aspx