相同sql在不同数据库耗时不同分析 sql查询时间不同,有很多方面影响,上层比如索引、数据量、分区、锁等原因,下层存储、架构等原因,具体事件具体分析,以下只是我遇到的一种情况。操作步骤:1:执行sql2:执行计划对比3:数据总量对比4:表结构对比5:索引对比6:数据行数对比7:建议
执行sqlselect * from ffxx where ffxxid in (select min(ffxxid) from ffxx where sjzt=1 and fjbj=3 and fjr=1 and jgsj>=to_date('2014-11-22 00:00:00','yyyy-mm-dd hh24:mi:ss') and jgsj
执行计划对比分析:b库该表分区,条件时间所在分区数据基数非常小,所以直接走全表扫描c库该表不是分区,索引基数非常大,但是走索引是该表最好的方式
数据总量对比select sum(bytes)/1024/1024 from dba_segments where segment_name='ffxx';分析:从中可以看出sql在b库数据库执行该表,数据总范围是32m但是在c库数据库总范围是2628m
表结构对比分析:b库该表创建了分区,c库没有创建分区
索引对比分析:b库时分区索引,c库时普通索引
数据行数对比分析:b库所在分区数据量才8w,c库是749w
建议将c库数据库中的该表该造成分区表注释:分区表的好处之一是减少数据查询范围总量