Sql server XML查询中未使用覆盖索引
正在运行SQL Server 2014。我有一个存储过程,在其中使用多个选择生成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
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个表)的数据结构,标题表明有一个覆盖索引,但在文本中我看不到任何关于索引的提及。什么指数?“覆盖”哪些领域以及如何覆盖?在什么桌子上?如果您至少给出一些所谓简单查询的示例,可能也会有所帮助。更妙的是,你能为你的处境创造一个有代表性的局面吗?我正在努力。尝试创建一个示例来演示问题。