Sql IN条件下的查询优化
我有一个使用not in的查询 当我执行同样的操作时,需要24秒 请对其进行优化Sql IN条件下的查询优化,sql,Sql,我有一个使用not in的查询 当我执行同样的操作时,需要24秒 请对其进行优化 SELECT GRIRNO,grirdate FROM GRIRmain where grirno in (select grirno from grir_pass where ins_check is not null) order by grirdate desc 如果表中有GRIRNO主键,则下面的查询可能会执行得更好
SELECT GRIRNO,grirdate
FROM GRIRmain
where grirno in (select grirno
from grir_pass
where ins_check is not null)
order by grirdate desc
如果表中有
GRIRNO
主键,则下面的查询可能会执行得更好
SELECT GRIRNO,grirdate FROM GRIRmain
where not exists (select 1 from grir_pass
where ins_check is not null
and grir_pass.grirno=GRIRmain.GRIRNO
)
order by grirdate desc
从您的注释来看,您似乎不需要存在子查询中的IN子句可以通过内部联接进行重构
SELECT GRIRmain.GRIRNO,GRIRmain.grirdate
FROM GRIRmain
INNER JOIN (
select distinct grirno
from grir_pass
where ins_check is not null
) t on t.grirno = GRIRmain.grirno
order by grirdate desc
您声称您的查询使用的是
而不是
中的,但是,您显示的查询使用的是
中的,您使用的是哪种产品?“SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加一个连接,postgresql
,oracle
,sql server
,db2
,…并非所有的条件都可以更改为连接-这是另一种情况result@user3698150这就是为什么used存在,但似乎你不需要存在