暂无图片
分享
NIU
2019-04-12
更新一条数据执行的时间测试的时候为14分钟,但是在plsql中查看执行计划预估时间为秒级别 ,表中都有索引,不知道问题在哪

update ZHYY.HBGA.TB_ST_ASJ

set PART = '1',gxsj = sysdate

where ASJBH = 'A130105350800201811test'

and SFMA_PDBZ = '0'

and SFSQ_PDBZ = '0'

and SFGM_PDBZ = '0';


收藏
分享
12条回答
默认
最新
Moone

pl/sql看的不一定准确,sqlplus开sql_trace验证

暂无图片 评论
暂无图片 有用 0
lastwinner
也许没走上对的索引呢,执行计划表结构发出来看看
暂无图片 评论
暂无图片 有用 0
NIU

tmp_cc5d542ad6e5919b6086cc9d18b2334df51638f4b96c2ef5.jpg

暂无图片 评论
暂无图片 有用 0
Moone

看执行计划走了SFGM_PDBZ的索引,这个索引是不是过滤性不高?

select sfgm_pdbz,count(*) 

from zhyy_hbga.tb_st_asj

group by sfgm_pdbz;

ASJBH有索引吗?感觉那个应该过滤性更好?

用类似的sql查下SFMA_PDBZ、SFSQ_PDBZ字段

暂无图片 评论
暂无图片 有用 0
NIU

tmp_dfa00c47cf2b9c5239246c6040caf550b7bdf90b476e0832.jpg

暂无图片 评论
暂无图片 有用 0
Moone

asjbh有索引吗?如果过滤性好可以建一个,用的索引在0值分布畸形

暂无图片 评论
暂无图片 有用 0
NIU

asjbh为主建,有索引 您让我查询的数值0.1.2代表什么

暂无图片 评论
暂无图片 有用 0
Moone

估计是统计数据没更新了,检查下

暂无图片 评论
暂无图片 有用 0
NIU

如何检查?麻烦您说明白点

暂无图片 评论
暂无图片 有用 0
盖国强

用 dbms_stats.gather_table_stats 收集一下该表的统计信息,再看执行计划。


确认一下,如果 ASJBH = 'A130105350800201811test' 是主键,看看数据类型。

应该用这个主键索引执行的。

暂无图片 评论
暂无图片 有用 0
NIU

统计表的信息会有什么影响吗?

分析表

 exec dbms_stats.gather_table_stats(ownname => 'zhyy_hbga',tabname => 'tb_st_asj',estimate_percent => 10,method_opt=> 'for all indexed columns') ; 

分析索引exec dbms_stats.gather_index_stats(ownname => 'zhyy_hbga',indname => 'ASJBH',estimate_percent => '10',degree => '4') ;

暂无图片 评论
暂无图片 有用 0
章芋文
问题已关闭: 问题已经过期
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏