日期:2014-05-18  浏览次数:20449 次

如何减少逻辑磁盘读取次数
以下是用Sql Profile监测到的结果
CPU:1800
Reads:923523
Write:0
Duration:1233


有3个表,表数据量分别为:主表50万、另外两个从表5千、1万,
用Row_Number()分页,查看最后一页的监测如上所示。

为什么Reads会那么大呢?差不多是主表数据的2倍,索引都有加,不然Duration不止1233毫秒。如何才能减少逻辑磁盘的读取次数?90多万太恐怖了。


------解决方案--------------------
索引没建好吧.
你的执行语句是啥?
------解决方案--------------------
用相关查询
------解决方案--------------------
估计是预读出来的数据命中率太低。所以多次的读磁盘。

另外,数据存储碎片等,会造成分页,也会多次读磁盘。

------解决方案--------------------
是否考虑把所有结果返回给前端程序缓存起来?

这样全部分页和翻页显示都在前端程序里控制了.

逻辑读为0, 所有逻辑读都在第一次查询时.
------解决方案--------------------
探讨

请问这是什么数据喔?

全部50万笔,假设一页显示50条,结果要1万页吗?

哪位用户会耐心的点翻页1万次?