Hopes

Start Here..

 

oracle 对于多个大表关联操作如何优化速度?

oracle 对于多个大表关联操作如何优化速度?


1、首先要建立适当的索引。sql在索引字段不要加函数,保证索引起效。如果是复合索引注意在sql的顺序。如果已经存在索    引,建议你先重建索引先,因为大数据表的索引维护到了一个阶段就是乱的,一般建议重建。建立好的一般可以获得几十倍的速度提升。


2、最大数据量的表放在最前,最小的表放在最后面。sql是从最后面开始反向解析的


3、其次是要把最有效缩小范围的条件放到sql末尾去。尤其是主键或者索引字段的条件。


4、保证你sql的算法合理性。保证复杂度和空间度的合理性。


5、必要时候使用存储过程。提升30%-40%的速度


6、建议你分页读取不要一下读完所有的数据。(使用rownum),一下子数据太多会使得内存不够用的。

如果这些都做了还不满意的话,可以考虑建立几个表空间,然后按照一个算法将各个表的数据,平均的放在各个表空间内(分表分区),在select的时候数据库就会使用多线程到各个表空间索引数据,这个一般不是上千万级的表是不用的。 也不是所有人都会用。


这个得看查询结果占到源表的比例:如果占比较大(大于10%-20%),则使用临时表效果会好。

posted on 2012-10-17 19:36 ** 阅读(3455) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

公告

你好!

常用链接

留言簿(2)

随笔档案

文章分类

文章档案

新闻档案

相册

收藏夹

C#学习

友情链接

搜索

最新评论

阅读排行榜

评论排行榜