如何检查 SQL Server 2005 中是不是存在非聚集索引
Posted
技术标签:
【中文标题】如何检查 SQL Server 2005 中是不是存在非聚集索引【英文标题】:How do I check if a nonclustered index exists in SQL Server 2005如何检查 SQL Server 2005 中是否存在非聚集索引 【发布时间】:2011-08-17 18:47:14 【问题描述】:我有以下几点:
CREATE NONCLUSTERED INDEX [MyTableIndex]
ON [dbo].[tablename] ([tablename_ID],[tablename_Field1])
INCLUDE ([Tablename_Field2],[Tablename_Field3])
我想创建一个 if 语句来检查它是否存在。我该怎么做?
【问题讨论】:
***.com/questions/2689766/…的可能重复 【参考方案1】:IF NOT EXISTS(SELECT * FROM sys.indexes WHERE name = 'MyTableIndex' AND object_id = OBJECT_ID('tablename'))
BEGIN
-- Index with this name, on this table does NOT exist
END
【讨论】:
+1 这很好用。是否应该关注表架构? @gotqn - 考虑架构,您可以将其作为两部分名称包含在 OBJECT_ID 调用中,例如OBJECT_ID('myschema.tablename') 感谢您的解释:- ]【参考方案2】:试试这个:
IF NOT EXISTS(SELECT * FROM sys.indexes WHERE Name = 'MyTableIndex')
-- put your CREATE INDEX statement here
【讨论】:
我建议同时检查 object_id(根据 AdaTheDev 的回答),因为索引名称不是唯一的。以上是关于如何检查 SQL Server 2005 中是不是存在非聚集索引的主要内容,如果未能解决你的问题,请参考以下文章
使用存储过程检查字符串是不是包含 SQL Server 2005 中的子字符串
使用SSIS从SQL Server 2005中的平面文件导入时如何保留NULL值