日期:2014-05-17  浏览次数:20408 次

SQL server 基础问题 select top 5 * from users
各位大侠好,

 select top 5 * from users order by username


象上面的一条语句,SQL SERVER 究竟是如何分析,然后通过磁盘的IO 读取到相应的数据的?

另外,为了执行这个SQL, SERVER SERVER 究竟访问了几次硬盘文件?

谢谢

------解决方案--------------------
看一下执行计划
------解决方案--------------------
set statistics io on 打开io选项就能看到数据库查询时的io了
------解决方案--------------------

select top 5 * from table1
  
------解决方案--------------------
--Top(TOP EXPRESSION:((5)))
       
------解决方案--------------------
--Clustered Index Scan(OBJECT:([dbtest1].[dbo].[table1].[index_1]))

------解决方案--------------------
这个问题答案如果往大了说,就是整个关系引擎+存储引擎了吧?
------解决方案--------------------
路过学习
------解决方案--------------------
只会写这样的,不知道原理的路过。
------解决方案--------------------
 调试下 有IO执行状态
------解决方案--------------------
我帮你顶顶,取数据,对取出的数据排序
------解决方案--------------------
关键是用了order by,所以如果排序字段不是聚集列的话,应该不是从聚集索引扫描的