我刚刚开始学习优化我的查询并分析他们的查询计划。我认为这个查询会生成非聚集索引查找 + 键查找。
SELECT ct.*
FROM Person.ContactType AS ct
WHERE ct.Name LIKE 'Own%';
Run Code Online (Sandbox Code Playgroud)
相反,它使用聚集索引扫描。我不知道为什么。
我正在 SQL Server 2012 Express 上使用 AdventureWorks2012 数据库。ContactTypeId 列上有聚集索引,Name 列上有非聚集索引。第三列 (ModifiedDate) 不属于任何索引。该表仅包含 20 行。
我怀疑查询优化器决定进行聚集索引扫描,因为表只有 20 行,也许扫描索引然后进行键查找更快。
sql-server execution-plan sql-server-2012 sql-server-express