EXISTS 和 IN 的查询效率问题

mysql使用总结:

一:EXISTS 和 IN 的查询效率问题

 

1:当a表的数据大于(a > b)b表中的数据时 用 IN  > EXISTS 的效率。

SELECT 
* 
FROM a 
WHERE id IN (
SELECT id FROM b 
)

 

2:当a表的数据小于  ( a < b )  b表中的数据时 用 EXISTS  >  IN 的效率。

SELECT 
* 
FROM  a  
WHERE  EXISTS(
SELECT 1 FROM b  WHERE a.xx = b.xx
)

 

3:  当A表数据与B表数据一样大时,in与exists效率差不多,可任选一个使用.

 

 

Not Exist用到子表中的索引进行查询,所以无论两个表中哪个表大,Not exists 都要比Not in 要快。

 

posted @ 2019-06-03 19:05  邓维-java  阅读(1113)  评论(0编辑  收藏  举报