我正在使用 AdventureWorks2012 数据库。
Sales.SalesOrderHeader
我在表上创建了以下索引
create index i1 on
sales.salesorderheader(purchaseordernumber,salespersonid)
include(orderdate,shipdate)
where purchaseordernumber is not null
and salespersonid is not null
当我运行以下查询时:
select
PurchaseOrderNumber,
OrderDate,
ShipDate,
SalesPErsonId
from sales.salesorderheader
where purchaseordernumber like '%po5%' and salespersonid is not null
我希望索引查找不是索引扫描,因为作为查询一部分的所有列都已经是索引的一部分。
我在某处读到,如果查询优化器认为索引扫描比索引查找便宜,那么我们将进行索引扫描。但是,我不明白为什么会在这种情况下发生。我们根本没有查询。
有人可以解释一下吗。