(FAQ)统计分析存在差异导致报表计算查询速度慢十几倍
830次浏览
编辑于2015年03月02日 00:00:00
【问题】: (FAQ)统计分析存在差异导致报表计算查询速度慢十几倍
版本: 7.0.3
模块: 系统部署
【答复】:
原因分析: 1.报表计算查询速度一个月比一个月慢,到最后查询时过两个小时后就报中断,初步怀疑与资料量的增长及统计分析有关 2.对数据库做一个统计分析(没有删除原来的统计分析),第二天虽然可以查询,但是查询速度要1个多小时,远远比测试库的5分钟要慢. 3. 查看数据库的执行计划,发现两个库的SQL的执行计划不一样,正式库多了一个笛卡尔积 4.经过查询,发现两边的索引一样,但是执行计划不一样 5. 基本可以确认是统计分析的原因,但对相关的几个表做统计分析后,发现查询速度还是很慢。需要重新删除统计分析后重建。 解决方法: 对相关的几个表把统计分析删除,然后再创建一次 --删除统计分析 Exec DBMS_STATS.DELETE_TABLE_STATS(ownname=>'whsh100603pm',tabname=>'t_gl_voucherentry'); --创建统计分析 exec dbms_stats.gather_table_stats (ownname=>'whsh100603pm',tabname=> 't_gl_voucherentry', estimate_percent=>'30'); 按上面的方法,分别对几个表做完统计分析后,查询速度和测试库的基本差不多,5分钟左右就出来结果了
版本: 7.0.3
模块: 系统部署
【答复】:
原因分析: 1.报表计算查询速度一个月比一个月慢,到最后查询时过两个小时后就报中断,初步怀疑与资料量的增长及统计分析有关 2.对数据库做一个统计分析(没有删除原来的统计分析),第二天虽然可以查询,但是查询速度要1个多小时,远远比测试库的5分钟要慢. 3. 查看数据库的执行计划,发现两个库的SQL的执行计划不一样,正式库多了一个笛卡尔积 4.经过查询,发现两边的索引一样,但是执行计划不一样 5. 基本可以确认是统计分析的原因,但对相关的几个表做统计分析后,发现查询速度还是很慢。需要重新删除统计分析后重建。 解决方法: 对相关的几个表把统计分析删除,然后再创建一次 --删除统计分析 Exec DBMS_STATS.DELETE_TABLE_STATS(ownname=>'whsh100603pm',tabname=>'t_gl_voucherentry'); --创建统计分析 exec dbms_stats.gather_table_stats (ownname=>'whsh100603pm',tabname=> 't_gl_voucherentry', estimate_percent=>'30'); 按上面的方法,分别对几个表做完统计分析后,查询速度和测试库的基本差不多,5分钟左右就出来结果了
推荐阅读