注册

下面sql 怎么优化问题

fang 2023/12/27 588 3

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:
t_ins_log 有24980157条数据,去掉not in很快,加上之后执行时间非常长

--下面sql执行时间很久,
SELECT l.lid,l.operattype
FROM t_ins_log l
LEFT JOIN (select i.dataid
from ex_bs_task_item i,
ex_bs_task t
where i.taskid = t.id
AND t.syscode = 'tysp_odate_cert') e
on e.dataid = l.lid
WHERE l.bsnum = '160408140513000401'
AND l.nodetype = 'node'
AND l.operattype not IN ('6', '7')
AND e.dataid IS NULL

  1   #NSET2: [1, 1, 384] 

2 #PRJT2: [1, 1, 384]; exp_num(2), is_atom(FALSE)
3 #SLCT2: [1, 1, 384]; E.DATAID IS NULL
4 #NEST LOOP LEFT JOIN2: [1, 1, 384]; join condition(E.DATAID = L.LID)[with var] partition_keys_num(0) ret_null(0)
5 #HASH RIGHT SEMI JOIN2: [1, 1, 192]; n_keys(1) (ANTI), KEY(DMTEMPVIEW_889226772.colname=L.OPERATTYPE) KEY_NULL_EQU(0)
6 #CONST VALUE LIST: [1, 2, 48]; row_num(2), col_num(1),
7 #SLCT2: [1, 1, 192]; L.BSNUM = '160408140513000401'
8 #BLKUP2: [1, 1, 192]; INDEX_INS_LOG_NODETYPE(L)
9 #SSEK2: [1, 1, 192]; scan_type(ASC), INDEX_INS_LOG_NODETYPE(T_INS_LOG as L), scan_range['node','node']
10 #PRJT2: [1, 1, 192]; exp_num(1), is_atom(FALSE)
11 #SLCT2: [1, 1, 192]; T.SYSCODE = 'tysp_odate_cert'
12 #NEST LOOP INDEX JOIN2: [1, 1, 192]
13 #SSEK2: [1, 1, 96]; scan_type(ASC), INDEX63033758283050704(EX_BS_TASK_ITEM as I), scan_range[(var2,min,min),(var2,max,max))
14 #BLKUP2: [1, 1, 48]; INDEX33572063(T)
15 #SSEK2: [1, 1, 48]; scan_type(ASC), INDEX33572063(EX_BS_TASK as T), scan_range[I.TASKID,I.TASKID]

--not in 注释掉0.01s执行完成
SELECT l.lid,l.operattype
FROM t_ins_log l
LEFT JOIN (select i.dataid
from ex_bs_task_item i,
ex_bs_task t
where i.taskid = t.id
AND t.syscode = 'tysp_odate_cert') e
on e.dataid = l.lid
WHERE l.bsnum = '160408140513000401'
AND l.nodetype = 'node'
-- AND l.operattype not IN ('6', '7')
AND e.dataid IS NULL

  1   #NSET2: [1, 1, 384] 

2 #PRJT2: [1, 1, 384]; exp_num(2), is_atom(FALSE)
3 #SLCT2: [1, 1, 384]; E.DATAID IS NULL
4 #NEST LOOP LEFT JOIN2: [1, 1, 384]; join condition(E.DATAID = L.LID)[with var] partition_keys_num(0) ret_null(0)
5 #BLKUP2: [1, 1, 192]; IDX_TINSLOG_NODETYPE_BSNUM(L)
6 #SSEK2: [1, 1, 192]; scan_type(ASC), IDX_TINSLOG_NODETYPE_BSNUM(T_INS_LOG as L), scan_range[('node','160408140513000401'),('node','160408140513000401')]
7 #PRJT2: [1, 1, 192]; exp_num(1), is_atom(FALSE)
8 #SLCT2: [1, 1, 192]; T.SYSCODE = 'tysp_odate_cert'
9 #NEST LOOP INDEX JOIN2: [1, 1, 192]
10 #SSEK2: [1, 1, 96]; scan_type(ASC), INDEX63033758283050704(EX_BS_TASK_ITEM as I), scan_range[(var1,min,min),(var1,max,max))
11 #BLKUP2: [1, 1, 48]; INDEX33572063(T)
12 #SSEK2: [1, 1, 48]; scan_type(ASC), INDEX33572063(EX_BS_TASK as T), scan_range[I.TASKID,I.TASKID]

回答 0
暂无回答
扫一扫
联系客服