ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 数据库 >> MySql >> JOIN与EXISTS子查询的效率研究

JOIN与EXISTS子查询的效率研究

来源:网络整理     时间:2015-12-26     关键词:

本篇文章主要介绍了"JOIN与EXISTS子查询的效率研究",主要涉及到方面的内容,对于MySql感兴趣的同学可以参考一下: 使用MySQL提供的Sample数据库Sakila现将profiling打开,用来一会查看sql执行时间set profiling=1; exists 子查询与...

使用MySQL提供的Sample数据库Sakila

现将profiling打开,用来一会查看sql执行时间

set profiling=1;

 exists 子查询与 join联接效率的对比,功能:查看没有演员的电影

EXPLAIN SELECT film_id, language_id FROM sakila.film
WHERENOTEXISTS(
    SELECT*FROM sakila.film_actor
    WHERE film_actor.film_id = film.film_id
);

 JOIN与EXISTS子查询的效率研究

EXPLAIN SELECT film_id, language_id FROM sakila.film
    LEFTJOIN sakila.film_actor USING(film_id)
WHERE film_actor.actor_id ISNULL; 

JOIN与EXISTS子查询的效率研究

他们只有一点细微的区别,一个select_type,还有就是Extra里后者用了Not exists,也就是提前终止算法,当遇到第一个actor_id不是null的时候,就舍弃这个电影的筛选.

最后来看看二者的效率

JOIN与EXISTS子查询的效率研究

可知使用子查询Exists的效率要低一些.

JOIN与EXISTS子查询的效率研究

SELECTDISTINCT film_id FROM sakila.film
    JOIN sakila.film_actor USING(film_id);

SELECT film_id FROM sakila.film
    WHEREEXISTS (
    SELECT*FROM sakila.film_actor
    WHERE film.film_id = film_actor.film_id);

SHOW PROFILES;

JOIN与EXISTS子查询的效率研究

可以看出.依然EXISTS效率要低

以上就介绍了JOIN与EXISTS子查询的效率研究,包括了方面的内容,希望对MySql有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_261694.html

相关图片

相关文章