[英]SQL Server : is it possible to create non-clustered index for IS NULL condition
在可空列上创建索引没有问题。
您可以对可空列进行的唯一操作是创建主键。
您可以右键单击绿色消息,SSMS将为您提供复制它的选项。 然后将其粘贴到查询编辑器中,您将看到它包含create index语句。 你需要做的只是给它它的名字并运行声明。
在对这个答案的评论中进行了对话后,Ivan Sivak发现这是SQL Server所具有的错误,并在2012版本中得到修复。 以下是Microsoft Connect中错误报告的链接。
默认情况下,查询计划使用任何方案中可用的最佳索引。
一个原因可能是索引碎片化 。 您可以通过运行查询来减少碎片
ALTER INDEX [myindexname] ON [dbo].[mytable] REBUILD;
你可以在这里阅读更多内容: https : //docs.microsoft.com/en-us/sql/relational-databases/indexes/reorganize-and-rebuild-indexes
查询计划有时不会为查询提供最佳可用索引。 为此,Microsoft提供了表提示。
SELECT * FROM mytable WITH(FORCESEEK) WHERE mycolumn IS NULL
注意:使用任何强制计划提示(ForceSeek,ForceScan等)时,您可能会破坏查询
SELECT * FROM mytable WITH([myindexname]) WHERE mycolumn IS NULL
此查询现在将使用myindexname进行上述查询。
SELECT * FROM mytable WITH([myindexname], ForceSeek) WHERE mycolumn IS NULL
operation for above query. 此查询现在将使用myindexname和上述查询的操作。
更多关于表格提示: https : //technet.microsoft.com/en-us/library/bb510478(v = sql.105).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.