oracle 数据语句优化,oracle语句优化

Dear All

系统里有下面的语句,其中MDN是Varchar类型,在Where条件中MDN=13811276353,这个写法有问题,后面是一串数字而不是加引号的字符串,这会导致oracle做index的full scan,极其消耗CPU,请改成下面的形式:mdn=’13811276353’

可以看到,两种写法的执行计划不一样。前一条语句运行0.3秒,后一种0.03秒,相差10倍。

SELECT DISTINCT mdn

FROM nm_net_user_17520548

WHERE mdn = 13811276353;

SELECT STATEMENT, GOAL = ALL_ROWS 600 1 12

HASH UNIQUE 600 1 12

INDEX FAST FULL SCAN NETMESSAGE NM_NET_USER_17520548_MDN_IDX 599 1 12

SELECT DISTINCT mdn

FROM nm_net_user_17520548

WHERE mdn = '13811276353';

SELECT STATEMENT, GOAL = ALL_ROWS 4 1 12

SORT UNIQUE NOSORT 4 1 12

INDEX RANGE SCAN NETMESSAGE NM_NET_USER_17520548_MDN_IDX 3 1 12

第一个地方改了以后,SELECT DISTINCT mdn

FROM nm_net_user_17520548

WHERE mdn = ‘13811276353’;

观察oracle的CPU消耗比较高的5个进程从99%,下降到45%。

第二个地方改了以后,

SELECT *

FROM nm_data_17520548_15126274 tbl

WHERE tbl.mdn = ‘13811314270’;

观察oracle的CPU消耗比较高的10个进程从45%,下降到25%。

系统总体的处理能力从30条美妙到150条每秒,处理能力大幅提升。

熬了一个通宵,几处问题调整后,下发速度从20TPS提高到150TPS,多谢大家

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值