oracle 对于多个大表关联操作如何优化速度? 10
4个回答
2011-06-15
展开全部
1、首先要建立适当的索引。sql在索引字段不要加函数,保证索引起效。如果是复合索引注意在sql的顺序。如果已经存在索引,建议你先重建索引先,因为大数据表的索引维护到了一个阶段就是乱的,一般建议重建。建立好的一般可以获得几十倍的速度提升。
2、最大数据量的表放在最前,最小的表放在最后面。sql是从最后面开始反向解析的。
3、其次是要把最有效缩小范围的条件放到sql末尾去。尤其是主键或者索引字段的条件。
4、保证你sql的算法合理性。保证复杂度和空间度的合理性。
5、必要时候使用存储过程。提升30%-40%的速度
6、建议你分页读取不要一下读完所有的数据。(使用rownum),一下子数据太多会使得内存不够用的。
如果这些都做了还不满意的话,可以考虑建立几个表空间,然后按照一个算法将各个表的数据,平均的放在各个表空间内(分表分区),在select的时候数据库就会使用多线程到各个表空间索引数据,这个一般不是上千万级的表是不用的。 也不是所有人都会用。
2、最大数据量的表放在最前,最小的表放在最后面。sql是从最后面开始反向解析的。
3、其次是要把最有效缩小范围的条件放到sql末尾去。尤其是主键或者索引字段的条件。
4、保证你sql的算法合理性。保证复杂度和空间度的合理性。
5、必要时候使用存储过程。提升30%-40%的速度
6、建议你分页读取不要一下读完所有的数据。(使用rownum),一下子数据太多会使得内存不够用的。
如果这些都做了还不满意的话,可以考虑建立几个表空间,然后按照一个算法将各个表的数据,平均的放在各个表空间内(分表分区),在select的时候数据库就会使用多线程到各个表空间索引数据,这个一般不是上千万级的表是不用的。 也不是所有人都会用。
今至电子科技有限公司
2024-08-23 广告
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整...
点击进入详情页
本回答由今至电子科技有限公司提供
展开全部
主要是索引 一定要合理 最优化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按照正常的动态规划方法进行优化连接顺序,如果表的数量太多,可能会使用遗传算法(是否在ORACLE中实现不太清楚)优化连接顺序.
两个表数据量很大的话应该会使用嵌套循环连接方法.
两个表数据量很大的话应该会使用嵌套循环连接方法.
追问
表的数量不多,最多3个大表,数据量比较大。嵌套循环连接是怎么连接,能详细说一下吗?谢谢~~
追答
嵌套循环连接就是先从一个表A中读一部分数据到内存,然后与另一个表B的数据依次连接,第二次再从表A中读一部分数据,再与表B的所有数据连接,假设表A大小为X,表B大小为Y,内存大小为M+1,执行代价为(X/M)*Y+X,通常表A选择较小的关系.
如果关系很小的话可以用HASH 连接,表上有索引的话可以用基于索引的连接方法
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多表连接可以先生成几个中间视图,最后再把这几个视图进行相应的连接
追问
大家都说建视图可以提高查询速度,但是我试了试,速度好像没有提升。请问你的中间视图是什么意思?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询