我正在尝试了解覆盖索引。在 Northwind 数据库中,我从表Categories中选择:
如您所见,该表在CategoryName列上有一个非聚集索引。
此 SQL 查询:
select CategoryName from Categories where Categories.CategoryName like 'Beverages'
返回带有索引查找的执行计划:
然而,这:
select CategoryName ,Description from Categories where Categories.CategoryName like 'Beverages'
通过使用主键索引的索引扫描返回此执行计划,这不是预期的:
只有当我强制使用非聚集索引进行查询时,我才能找到预期的行为:
select CategoryName ,Description from Categories
with(index(CategoryName))
where Categories.CategoryName like 'Beverages'
问题是什么?