我正在使用Microsoft的AdventureWorks2017数据库。
我已经执行以下操作:
create index idx_CarrierTrackingNumber on [Sales].[SalesOrderDetail] (CarrierTrackingNumber);
go
--------------------------------------------------------------------------------
select
CarrierTrackingNumber
from
[Sales].[SalesOrderDetail]
where
CarrierTrackingNumber like '%4';
go
当我查看执行计划时,它显示以下内容:
因为我的LIKE
搜索中的第一个字符是通配符,所以不应该使用表扫描代替索引扫描吗?
编辑#1:添加了我相信这一点的原因
我正在读一本书SQL Performance explained,在书中写着:
相反的情况也是可能的:以如下开头的LIKE表达式 通配符。这样的LIKE表达式不能用作访问 谓语。如果没有,数据库必须扫描整个表 提供访问谓词的其他条件。
我误会了作者在说什么吗?