索引 - 查询类型和索引
2013-02-19 15:14 BIWORK 阅读(962) 评论(0) 编辑 收藏 举报表中的示例基于 AdventureWorks2008R2 示例数据库, 在 SQL Server Management Studio 中运行这些示例时. 您可以通过显示实际的执行计划来查看查询优化器选择的索引. 有关详细信息, 请参阅 如何显示实际执行计划.
分类 |
描述 |
考虑的索引 |
与特定值完全匹配 |
搜索与特定值完全匹配的项. 其中, 查询使用 WHERE 子句指定列项. 例如: SELECT BusinessEntityID, JobTitle FROM HumanResources.Employee WHERE BusinessEntityID = 228; |
BusinessEntityID 列的非聚集或聚集索引
|
与 IN (x,y,z) 列表中的某个值完全匹配 |
搜索与指定值列表中的某个值完全匹配的项. 例如: SELECT BusinessEntityID, JobTitle FROM HumanResources.Employee WHERE BusinessEntityID IN (288, 30, 15); |
BusinessEntityID 列的非聚集或聚集索引 |
值范围 |
搜索某个值范围, 其中, 查询指定的任何项的值在两个值之间. 例如: SELECT ProductModelID, Name FROM Production.ProductModel WHERE ProductModelID BETWEEN 1 and 5; 或 WHERE ProductModelID >= 1 AND ProductModelID < = 5;
|
|
ProductModelID 列的聚集索引或非聚集索引
|
||
表之间的联接 |
基于联接谓词, 在一个表中搜索与另一个表中的某个行匹配的行. 例如: SELECT a.ProductAssemblyID, b.Name, a.PerAssemblyQty FROM Production.BillOfMaterials AS a JOIN Production.Product AS b ON a.ProductAssemblyID = b.ProductID WHERE b.ProductID = 900; |
ProductID 和 ProductAssemblyID 列的聚集索引或非聚集索引
|
LIKE 比较 |
搜索以特定字符串(如 abc%)开头的匹配行. 例如: SELECT CountryRegionCode, Name FROM Person.CountryRegion WHERE Name LIKE N'D%' |
Name 列的非聚集或聚集索引
|
排序或聚合 |
需要隐式或显式排序顺序或聚合 (GROUP BY). 例如: SELECT a.WorkOrderID, b.ProductID, a.OrderQty, a.DueDate FROM Production.WorkOrder AS a JOIN Production.WorkOrderRouting AS b ON a.WorkOrderID = b.WorkOrderID ORDER BY a.WorkOrderID; |
排序列或聚合列的非聚集索引或聚集索引 对于排序列,考虑为列指定 ASC 或 DESC 顺序.
|
PRIMARY KEY 或 UNIQUE 约束 |
搜索与插入和更新操作中的新索引键值重复的值, 以强制 PRIMARY KEY 和 UNIQUE 约束. 例如: INSERT INTO Production.UnitMeasure (UnitMeasureCode, Name, ModifiedDate) VALUES ('OZ1', 'OuncesTest', GetDate()); |
约束中定义的列的聚集索引或非聚集索引
|
列在选择列表中,但不在谓词中.
|
包含选择列表中未用于搜索和查找的一列或多列.例如: SELECT Title, Revision, FileName FROM Production.Document WHERE Title LIKE N'%Maintenance%' AND Revision >= 0 ; |
在 INCLUDE 子句中指定了 FileName 的非聚集索引.
|
PRIMARY KEY/FOREIGN KEY 关系中的 UPDATE 或 DELETE操作 |
在列参与 PRIMARY KEY/FOREIGN KEY 关系(无论带不带 CASCADE 选项)的更新或删除操作中搜索行. |
外键列的非聚集索引或聚集索引.
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库