每天一问!关于多表复合查询分页效率问题!

chenkui2008 2010-07-15 10:22:07
由于系统运行了5,6年,数据越来越多,虽然部分已经数据已经归档,减少数据库的压力,但是日常的工作流任务等等数据量还是很大的,由于原系统都是自带的分页,现在随着数据量大,效率越来越低,所以考虑分页,数据库是Sqlserver2008,由于分页查询语句都是多表联合查询:一般3-6个表相互查询,where条件一堆,导致建索引速度都慢,用Row_number分页呢,由于那个查询sql太复杂,导致效率也不是很明显:比如原始sql:slect a.A1,b.A1,c.C1,d.D1 from a,b,c,d where
a.A=b.A and a.C=C.c and c.status='C' and 等等

改成分页后的sql:select * from (select row_number over (order by a) as a,* from
(原始sql)) a where a between m and n,发现有时候快,有时候超慢,还不如自带的,通过查询计划发现:逻辑扫描次数达到100W次,我狂汗,大家有没有这方面优化的建议啊!交流交流,就是复杂视图分页,我的sql里其中还有复杂的sql函数计算问题……
...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sandheart 2011-10-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ayouxinping 的回复:]
这个比较简单,每次取10-100条数据显示,用sql进行分页就可以了,我之前就是这么做的,数据量再大,也是每次取那100来条数据,速度很快
[/Quote]

能不能详细说一下怎么每次取100条,要检查条件,还要排序,这些操作要完全表才能完成呀
苍穹无痕 2010-07-15
  • 打赏
  • 举报
回复
这个比较简单,每次取10-100条数据显示,用sql进行分页就可以了,我之前就是这么做的,数据量再大,也是每次取那100来条数据,速度很快
亮剑_ 2010-07-15
  • 打赏
  • 举报
回复
索引是最简单和有效的,试试能不能再建一些索引

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧