Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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 XML查询中未使用覆盖索引_Sql Server - Fatal编程技术网

Sql server XML查询中未使用覆盖索引

Sql server XML查询中未使用覆盖索引,sql-server,Sql Server,正在运行SQL Server 2014。我有一个存储过程,在其中使用多个选择生成XML。下面是一个简化的例子 SELECT (SELECT ... FROM X WHERE ID = @ID FOR XML PATH('x'), TYPE), (SELECT ... FROM Y WHERE ID = @ID FOR XML PATH('y'), TYPE), (SELECT ... FROM Z WHERE ID = @ID FOR XML PATH('z'), TYP

正在运行SQL Server 2014。我有一个存储过程,在其中使用多个选择生成
XML
。下面是一个简化的例子

SELECT
    (SELECT ... FROM X WHERE ID = @ID FOR XML PATH('x'), TYPE),
    (SELECT ... FROM Y WHERE ID = @ID FOR XML PATH('y'), TYPE),
    (SELECT ... FROM Z WHERE ID = @ID FOR XML PATH('z'), TYPE),
    (SELECT IndexedColumn1, IndexedColumn2
    FROM W WHERE ID = @ID FOR XML PATH('w'), TYPE),
FOR XML PATH(''), ROOT(root')
查看I/O,我看到
IndexedColumn1
IndexedColumn2
不显示任何
逻辑读取。然而,当我在列表中添加更多的simple选项时,我突然看到这些索引列的大量I/O。为什么


当查询变大时,似乎不考虑我的非聚集索引,即使此查询独立于查询的其余部分。我应该忽略这些增加的
逻辑读数吗
还是我确实做错了什么?

你能在添加“几个更简单的选择”之前和之后发布执行计划吗?Dave.Gugg有一个有效的问题。我的简单猜测是,原始版本可能已经被缓存/优化了。更改它会导致整个脚本重新生成。您的描述无法告诉我们如何回答您。最好添加一些更像执行计划图像的示例数据和表(2或3个表)的数据结构,标题表明有一个覆盖索引,但在文本中我看不到任何关于索引的提及。什么指数?“覆盖”哪些领域以及如何覆盖?在什么桌子上?如果您至少给出一些所谓简单查询的示例,可能也会有所帮助。更妙的是,你能为你的处境创造一个有代表性的局面吗?我正在努力。尝试创建一个示例来演示问题。