有两表:出库材料清单表A,库存表B
现想查询A表中的每个材料的出库数量,在B表中是否有足够的库存(B表中的,一个材料会有多条库存记录)?我想到的是有三种方法:
1.FOR LOOP
2.LEFT JOIN
3.EXISTS
哪一种效率会更好呢? 为什么?他们的执行方式各是什么样的?上面是一种很常见的场景. 由于本人非常不精通数据库技术.所以特请教大家! 谢谢!!!
现想查询A表中的每个材料的出库数量,在B表中是否有足够的库存(B表中的,一个材料会有多条库存记录)?我想到的是有三种方法:
1.FOR LOOP
2.LEFT JOIN
3.EXISTS
哪一种效率会更好呢? 为什么?他们的执行方式各是什么样的?上面是一种很常见的场景. 由于本人非常不精通数据库技术.所以特请教大家! 谢谢!!!
前两种都可以用到索引,如果有的话
效率会比较高。
如果是这样建议使用exists.因为exists是返回一个匹配行,有结果就返回
效率会比较高。exists同样会走索引。如果2个表中的数据都需要读取的话。使用b比较合适。满足要求,效率也不错。loop通常效率是3种中最低的。
这个效率很好,有结果就返回
for loop 必须抛弃,等同于In了,全表遍历了。
左链接的效率我觉得不如exists,左链接要先做交叉连接,然后才算出左连接。
顶一个,进行sql性能测试,哪个效率高永哪个。
[Quote]说那么多干嘛,直接看执行计划[Quote]