Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 在列上创建索引以运行空值查询_Sql Server 2008_Indexing_Database Performance - Fatal编程技术网

Sql server 2008 在列上创建索引以运行空值查询

Sql server 2008 在列上创建索引以运行空值查询,sql-server-2008,indexing,database-performance,Sql Server 2008,Indexing,Database Performance,我们正在使用SQLServer2008。我们有几百万行的桌子。我们有一个列可以为NULL,但很少有行将此列设置为NULL。百万行中可能有100-200行 我们有一个查询来选择这些行,并且在该列上有一个索引。比如说 SELECT tbl1.Col1, tbl1.Col2, tbl1.Col3, tbl1.Col4, tbl1.Col5, tbl1.Col6 tbl2.Col1, FROM tbl1 INNER JOIN tbl

我们正在使用SQLServer2008。我们有几百万行的桌子。我们有一个列可以为NULL,但很少有行将此列设置为NULL。百万行中可能有100-200行

我们有一个查询来选择这些行,并且在该列上有一个索引。比如说

SELECT
    tbl1.Col1,
    tbl1.Col2,
    tbl1.Col3,
    tbl1.Col4,
    tbl1.Col5,
    tbl1.Col6
    tbl2.Col1,
FROM
    tbl1
    INNER JOIN tbl2 ON (tbl1.FK = tbl2.PK)
WHERE
    tbl1.NullableColumn IS NULL
不幸的是,我们需要一些tbl1列,我不确定有多少列作为包含列使用太多,但我们绝对需要tbl1中的18列。当我们运行这个查询时,优化器一直建议在tbl.NullableColumn上建立索引,但我们已经有了索引。它只是没有被使用,即使有索引提示,它仍然没有被使用

执行计划说它在IX_tbl1_NullableColumn上进行索引查找,然后在聚集索引上进行键查找。键查找占用99%的时间

我遇到过一些人说,永远不要使用可为空的列作为索引。这是真的吗?它适用于这种情况吗? 有没有更聪明的方法来查找表中的少数空值?
将SP3应用于SQL Server修复了此问题。这很奇怪,我无法解释。我在发行说明中也看不到任何关于它的内容。我不知道服务器是否只需要重新启动,或者是SP3解决了这个问题。我想可能是SP3,因为我们所有的其他服务器都在运行SP3,并且没有显示出相同的问题。

我很困惑。你声称索引没有被使用,甚至没有提示?!在下一段中,你们会说在查询计划的IX_tbl1_NullableColumn上有索引查找。该计划明确指出,问题在于检索您绝对需要的18列+FK,而不是索引本身。所以,若这个特定查询的性能是您的优先级,那个么就包括那个些列。如果我们能看到查询计划和IO统计数据,这会有所帮助,否则我们无法确定这99%的数据来自何处。@TomT我也很困惑,这正是我所说的。执行计划包括优化器声称缺少的索引上的索引查找。所以我不知道为什么它认为它丢失了,因为它正在使用。我们还有另外3台服务器,它们100%工作,而优化器没有建议索引。但是他们在SP3上,这个问题是在SP2上。我们将进行更新,如果仍然存在问题,我将发回。@TomT安装了service pack,现在安装在SP3上,问题已经解决。没有更多关于缺少索引的疯狂建议。我们甚至没有重建索引或更新统计数据。不过,我在他们的发行说明中找不到任何内容。谢谢分享您的发现。我会尽量记住SP2的这个问题。