以下是用Sql Profile监测到的结果
CPU:1800
Reads:923523
Write:0
Duration:1233
有3个表,表数据量分别为:主表50万、另外两个从表5千、1万,
用Row_Number()分页,查看最后一页的监测如上所示。
为什么Reads会那么大呢?差不多是主表数据的2倍,索引都有加,不然Duration不止1233毫秒。如何才能减少逻辑磁盘的读取次数?90多万太恐怖了。
------解决方案--------------------
索引没建好吧.
你的执行语句是啥?
------解决方案--------------------
用相关查询
------解决方案--------------------
估计是预读出来的数据命中率太低。所以多次的读磁盘。
另外,数据存储碎片等,会造成分页,也会多次读磁盘。
------解决方案--------------------
是否考虑把所有结果返回给前端程序缓存起来?
这样全部分页和翻页显示都在前端程序里控制了.
逻辑读为0, 所有逻辑读都在第一次查询时.
------解决方案--------------------