首页 > 代码库 > exists和INNER JOIN 区别
exists和INNER JOIN 区别
今天帮开发人员优化SQL,发现一个以前不怎么在意的问题
SELECT bond.store_no FROM bill_order_num_dtl bond WHERE EXISTS ( select 1 from meetorder_staff_dtl b , meetorder_staff a where b.operate_area = bond.store_no and a.seq_no = b.seq_no and a.user_code = ‘lym‘ ) ;
查询需要2S,bill_order_num_dtl 数据量大概2W多条,meetorder_staff_dtl 50条左右,将EXISTS换为INNER JOIN后只需0.02S,差了100倍,EXISTS在命中率高的情况下查询速度较快,像这种需要判断的表的数据量较大,而条件表的数据量较少时不宜使用。INNER JOIN相对较稳定一些,不会随命中率的变化而影响性能。改成下面后,只需0.02S
SELECT bond.store_no FROM bill_order_num_dtl bond INNER JOIN meetorder_staff_dtl b on b.operate_area = bond.store_no INNER JOIN meetorder_staff a on a.seq_no = b.seq_no WHERE a.user_code = ‘lym‘
exists和INNER JOIN 区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。