暂无图片
分享
张洋华
2020-03-13
SQL优化
暂无图片 5M

一个告警系统的综合查询SQL,平时执行要30s,客户觉得太慢了,sql相关信息稍后发出来,希望各位大佬能给点有点优化思路。

收藏
分享
7条回答
默认
最新
张洋华
上传附件:sqltext.txt
暂无图片 评论
暂无图片 有用 0
打赏 0
张洋华
上传附件:sql10.txt
暂无图片 评论
暂无图片 有用 0
打赏 0
邓秋爽

收集个SQLHC

暂无图片 评论
暂无图片 有用 0
打赏 0
刘峰

在ALARM_TIME列建立索引,如果ALARM_TIME可以为空,可以按如下方式建立索引
create index idx_xxx on AMOD_TARGET_ALARM(ALARM_TIMEdesc,0);
然后按以下hint运行sql即可
SELECT *
FROM (SELECT temptable., ROWNUM ROW_NUM
FROM (select /
+ index(t ALARM_TIME的desc索引) use_nl(t,s,tc,r,a,si) leading(t) /a.IS_SENDZDALARM,
a.IS_SENDSMSALARM,
a.IS_SENDINTERFACEALARM,
t.TARGET_ID,
si.
,
t.TARGET_TYPE,
t.UNITID,
t.ALARM_TYPE,
t.ALARM_TIME,
t.ALARM_CONTENT,
t.ALARM_LEVEL,
t.SCANCE,
s.UNITNAME,
tc.code_name,
tc.code_id,
r.PROVIDER_NAME,
r.PROVIDER_ID
from AMOD_TARGET_ALARM t
left join amod_target_orginfo s
on t.unitid = s.unitid
left join amod_type_code tc
on tc.code_id = t.alarm_type
left join AMOD_TARGET_PROVIDER r
on t.PROVIDER_ID = r.PROVIDER_ID
left join AMOD_TARGET_ITEM a
on t.TARGET_ID = a.TARGET_ID
and t.unitid = a.unitid
left join (select /*+ no_merge */ sm.targetalarmid,
to_char(wmsys.wm_concat(sm.people)) people,
to_char(wmsys.wm_concat(sm.phone)) phone
from amod_alarm_smsreceiveinfo sm
group by targetalarmid) si
on si.targetalarmid = t.id
where 1 = 1
order by ALARM_TIME desc) temptable
WHERE ROWNUM <= 20)
WHERE ROW_NUM >= 1;
另外如果创建索引之后执行计划全部自动走NL+视图谓词推入,就不用加Hint了

暂无图片 评论
暂无图片 有用 0
打赏 0
张洋华
暂无图片 评论
暂无图片 有用 0
打赏 0
张洋华

感谢大佬们帮忙看问题~

暂无图片 评论
暂无图片 有用 0
打赏 0
张洋华
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
有 Oracle 透明网关相关文档吗?
回答 1
https://docs.oracle.com/en/engineeredsystems/advancedsupportgateway/security/gprow.htmlscrolltoc
Oracle 还原一个库到本地,本地没有这个库,直接imp导入的话,可行吗?
回答 4
已采纳
imp命令里是要输入用户名密码和数据库名称的吧,你都没建库,往哪里导?如果你说的库是指的schema的话,那么,只要有该schema对应的同名表空间,即可导入时自动在目标库创建该schema;如果没有
关于Tablespace存储空间的问题
回答 3
有很多脚本,比如可用剩余多少天的那种,一般还是用语句查,或者10g的client依然很好用
解释Oracle的术语SID或ORACLE_SID?
回答 7
已采纳
SID的全称是站点标识符(siteidentifier)。在Unix/Linux中,数据库会把SID和ORACLEHOME(Oracle软件的安装目录)一同进行散列运算,创建一个唯一的键名而附加到SG
oracle迁移到pg,一般是个啥过程?
回答 1
已采纳
Oracle迁移到PostgreSQL的过程一般包括以下步骤:评估现有的Oracle数据库,确定需要迁移的数据和应用程序。选择合适的迁移工具,例如Ora2Pg、AWSDatabaseMigration
Oracle库起不来,只能到mount状态
回答 5
那么最后是怎么解决的呢?
用Redhat6跑Oracle10g 稳定吗?
回答 3
更新换代了,使用主流版本或者国产数据库
rac备库双节点查询到的表最后更新时间不一致
回答 1
SELECTx.ksppinmNAME,y.ksppstvlVALUE,x.ksppdescdescribFROMSYS.x$ksppix,SYS.x$ksppcvyWHEREx.indxy.indx
请问oracle数据库表里面只有有clob的字段是不是都会影响查询速度?
回答 2
clob查询慢可以考虑在clob列上建全文索引,用contains子句查询试试。
ORACLE用户密码怎么改不了?
回答 3
先startup