SQL Server 无通配符 LIKE 优化

Kyl*_*ndt 5 sql-server-2008 sql-server optimization

在使用 SQL Server 2008 R2 作为后端的 Web 应用程序中,我有几个字段,如果存在,将 WHERE 子句添加到查询中。

如果我将所有查询生成为 like 子句,例如:

AND Uri LIKE @Uri

如果Uri包含 no %,优化器是否足够聪明以将其视为WHERE Uri = @Uri或我必须处理该应用程序端?

我意识到优化器总有一天会从我手下变出来,这有点草率,但我仍然很好奇。

示例计划

我做了一个一次性测试,似乎表明>= ... <=条件可能是这种情况:

在此处输入图片说明

对比 凡条款:

在此处输入图片说明

因此,它们都在该人为索引上触发索引搜索。是>= ... <==在这种情况下,并且将这个总是发生?

Mar*_*ian 2

最有可能的是,如果有适当的索引并且统计信息是最新的,那么查询优化器应该能够使用现有的索引并在可能的情况下进行最佳操作(查找)。

\n

您将在这两篇文章中获得详细信息:\n MSDN 上的 %Like% 运算符 \xe2\x80\x93 查询调优的索引使用情况和\n myitforum.com 上的SQL 性能 - 索引和 LIKE 子句

\n