|
|
1
2
您似乎有两个索引:
第一个索引不包括
更多
选择性的
平均而言,你
然而,你的原版
不幸的是,第一种方法需要对
|
|
|
2
3
如果提供显式值,SQL Server可以使用此字段的统计信息来做出“更好”的查询计划决策。不幸的是(正如我最近所经历的那样),如果统计数据中包含的信息具有误导性,有时SQL Server只是做出了错误的选择。
如果您想深入研究这个问题,我建议您检查一下如果使用其他guid会发生什么:如果它对不同的具体guid使用不同的查询计划,这表明使用了统计数据。在这种情况下,您可能需要查看
编辑
DBCC SHOW_STATISTICS
:直方图中的“慢”和“快”GUID可能位于不同的存储桶中。我已经
had a similar problem
|
|
|
3
1
我的猜测是,当您采用非参数化路由时,您的guid必须从varchar转换为UniqueIdentifier,这可能导致不使用索引,而它将用于采用参数化路由。
|
|
|
4
0
不看执行计划就很难说 正如我所说,SQLServer试图优化执行计划 对于 这个值,所以通常你会看到更好的结果。在这里,它的决策所依据的信息似乎是不正确的/误导性的,当它优化查询以获得通用参数值时(出于某种原因),您会感觉更好。
|