列表性能优化

来源:互联网 发布:怎样让淘宝号有心 编辑:程序博客网 时间:2024/06/05 16:49

列表功能在oracle中通常由两个语句完成,一个查询第x-y行的明细,第二个查询完成总的数量、合计数据的查询。

性能主要是在第一个语句,常用的sql方法是根据rownum取第x-y行的明细数据。

提高性能的方法大致总结如下,不是sql级别,而是功能应用级别。

1)不加排序。Order by很浪费资源,导致功能速度很慢,一般加order by和不加,速度能相差7/8倍。因此,有些功能考虑不加order by

2)某些情况不加排序。在一些查询出的总的数据量比较大的情况下,查看列表的明细数据是没有业务意义的,如数据超过100条,看明细意义就不大。因此可以考虑先查询总的数量,执行第二个语句,然后根据总的数据量判断是否要加order by。如总的数据量大于100条时就不加order by,小于100条就加order by

3)只查部分关联表。这种情况发生在多表关联,而其中有的表只在列表明细数据中显示使用,而不在查询条件的范围内。可以的办法是先不包括该表进行查询,查询出需要的明细数据。然后再根据明细数据的关键信息,查询该表的数据,拼接到明细数据中。

4)计算函数的使用。有些列表的显示项是采用函数或某些自定义公式计算出来的,浪费了大量的资源。因此这些函数就不要在所有的数据中使用,而只在需要显示的明细数据中使用。

5)不分页。这种情况不查询汇总的数据,也就不能分页。当然不是指显示所有的数据,而是只显示第一页的数据。原来是两个查询语句,这种情况下是一个语句,减少了查询任务。
原创粉丝点击