sql优化:开发人员应该要细心
sql优化:开发人员应该要细心
客户反映
运行某个报表要45秒以上
select id, role_id, login
from tb_user e
where role_id in (Select ID
From tb_role f
Connect By Prior Id = parent_id
Start With Id = 1);
直接拿
以上语句到数据库上执行只要 2秒钟左右
那现在问题只能定位到开发人员写的程序
检查sql
select id, role_id, login
from tb_user e
where role_id in (Select ID
From tb_role f
where e.role_id=f.id
Connect By Prior Id = parent_id
Start With Id = 1);
多了红色部分,去掉
再次运行恢复到2秒正常
以前该sql 是用exists 的写法
select id, role_id, login
from tb_user e
where exists (Select ID
From tb_role f
where e.role_id=f.id
Connect By Prior Id = parent_id
Start With Id = 1);
再改写成用in时开发人员忘记去掉红色代码部分导致执行时间过长
所以开发人员要细心,做为dba要更加严格审核sql才可提交出去