/*
实验:索引的查询路径性能
*/
--准备条件:SQLSERVER 2008 R2,安装了示例数据库AdventureWorks
--由于公司上网受限制,截图就免了。
--示例的数据库表对象为Production.WorkOrder(总共72591行数据)
--该对象有三个索引
--PK_WorkOrder_WorkOrderID(聚集索引)
--IX_WorkOrder_ProductID(非唯一非聚集索引)
--IX_WorkOrder_ScrapReasonID(非唯一非聚集索引)
----------------------------------------------------------------
/*
1、聚集索引扫描(Clustered Index Scan)
*/
--打开一个查询编辑器,点击编辑器上面的显示查询计划按钮
SET STATISTICS TIME ON --显示查询执行时间
SET STATISTICS IO ON --显示查询的io读取
CHECKPOINT 1 --提交检查点,
DBCC DROPCLEANBUFFERS --删除数据缓存
DBCC FREEPROCCACHE --删除存储过程缓存
SELECT * FROM Production.WorkOrder
--查询结果是72591行,执行时间是1177毫秒,每毫秒读取行数61.99行,消耗成本是:0.47,逻辑读取526
--查询计划步骤:
--1、Clustered Index Scan(PK_WorkOrder_WorkOrderID)
--2、Compute Scalar
--3、Compute Scalar
--4、SELECT
/*
说明:
1、没有选择列,必须从聚集索引中读取每一行,由于聚集索引是INT类型,会顺序的读取每一行。
2、看似它的速度慢,实际上,它的单位时间内读取速度是最快的。
*/
--------------------------------------------------------------