+ -
当前位置:首页 → 问答吧 → sql语句优化

sql语句优化

时间:2011-10-18

来源:互联网

sql语句:
SELECT D.START_DATE AS startDate,
  D.END_DATE AS endDate,
  D.YWFW AS ywfw,
  CASE
  WHEN D.YWFW LIKE '3%' THEN
  '发送'
  ELSE
  '接收'
  END AS cslx,
  CASE
  WHEN D.YWFW IN ('31', '32', '41') THEN
  G.ERROR_INFO
  WHEN D.YWFW IN ('42', '43', '44', '45') THEN
  '人员信息传输失败'
  WHEN D.YWFW = '33' THEN
  '缴费信息发送失败'
  END AS bz,
  '查看明细' AS mx
  FROM (SELECT SWJG_DM
  FROM DM_SWJG
  WHERE YXBZ = 'Y'
  CONNECT BY SJ_SWJG_DM = PRIOR SWJG_DM
  START WITH SWJG_DM = '23505000000') F,
  GF_EXEC_PROCEDURES_RECORD D,
  GF_EXEC_PROCEDURES_LOG G
 WHERE D.DUMP_SEQ = G.DUMP_SEQ  
  AND (SELECT X.NSR_SWJG_DM
  FROM DJ_NSRXX X
  WHERE X.NSRDZDAH = (CASE
  WHEN G.NSRDZDAH IS NOT NULL THEN
  G.NSRDZDAH
  WHEN G.NSRDZDAH IS NULL AND G.PER_ID IS NOT NULL THEN
  (SELECT NSRDZDAH FROM GF_SBGRMXXX WHERE PER_ID = G.PER_ID)
  ELSE
  NULL
  END)) = F.SWJG_DM
  AND G.ISSUCCESS = 'N'
  AND D.YWFW IN ('31', '32', '41', '42', '43', '44', '45');

F5执行计划:

索引:
DJ_NSRXX:NSRDZDAH、NSR_SWJG_DM
GF_EXEC_PROCEDURES_RECORD:YWFW、DUMP_SEQ
GF_EXEC_PROCEDURES_LOG:NSRDZDAH、DUMP_SEQ、PER_ID
GF_SBGRMXXX:PER_ID、NSRDZDAH

其中GF_EXEC_PROCEDURES_LOG、DJ_NSRXX、GF_SBGRMXXX的数据较多,均在百万以上。

麻烦各位大牛帮小弟看下。

作者: wujunxiong   发布时间: 2011-10-18

无图无真相

大致看了下,还是可以优化的,执行计划如何的?

作者: java3344520   发布时间: 2011-10-18

具体得看一下执行计划。

作者: lzd_83   发布时间: 2011-10-18



图片太大了,这次要是再看不见就到下面链接来看吧
http://hi.baidu.com/%C9%F1%C0%B4%D6%AE%B1%CA01/album/item/c20d4c627ead4d130d33fa66.html#IMG=c03a9634c726a0f8a71e1231

作者: wujunxiong   发布时间: 2011-10-18



图片太大了,这次要是再看不见就到下面链接来看吧
http://hi.baidu.com/%C9%F1%C0%B4%D6%AE%B1%CA01/album/item/c20d4c627ead4d130d33fa66.html#IMG=c03a9634c726a0f8a71e1231

作者: wujunxiong   发布时间: 2011-10-18

呵呵,链接也看不到

作者: java3344520   发布时间: 2011-10-19

热门下载

更多