mysql 基于规则的执行计划(二)

上篇文章说mysql还在用基于规则的优化器,是我的误解,里面涉及到 Covering Index,获取数据的方式,Cost的计算等等,总之,刚从oracle来搞mysql,两者差别还是挺大的:
 
The STRAIGHT_JOIN keyword forces the join to proceed in the order specified
in the query. Here’s the EXPLAIN output for the revised query:
 
mysql> explain
    -> SELECT STRAIGHT_JOIN film.film_id, film.title, film.release_year, actor.actor_id,
    -> actor.first_name, actor.last_name
    -> FROM sakila.film
    -> INNER JOIN sakila.film_actor USING(film_id)
    -> INNER JOIN sakila.actor USING(actor_id);
+----+-------------+------------+--------+------------------------+----------------+---------+----------------------------+------+-------------+
| id | select_type | table      | type   | possible_keys          | key            | key_len | ref                        | rows | Extra       |
+----+-------------+------------+--------+------------------------+----------------+---------+----------------------------+------+-------------+
|  1 | SIMPLE      | film       | ALL    | PRIMARY                | NULL           | NULL    | NULL                       |  994 |             |
|  1 | SIMPLE      | film_actor | ref    | PRIMARY,idx_fk_film_id | idx_fk_film_id | 2       | sakila.film.film_id        |    1 | Using index |
|  1 | SIMPLE      | actor      | eq_ref | PRIMARY                | PRIMARY        | 2       | sakila.film_actor.actor_id |    1 |             |
+----+-------------+------------+--------+------------------------+----------------+---------+----------------------------+------+-------------+
3 rows in set (0.00 sec)
mysql> SHOW STATUS LIKE 'last_query_cost';
+-----------------+-------------+
| Variable_name   | Value       |
+-----------------+-------------+
| Last_query_cost | 2197.800000 |
+-----------------+-------------+
1 row in set (0.01 sec)
mysql> explain
    -> SELECT  film.film_id, film.title, film.release_year, actor.actor_id,
    -> actor.first_name, actor.last_name
    -> FROM sakila.film
    -> INNER JOIN sakila.film_actor USING(film_id)
    -> INNER JOIN sakila.actor USING(actor_id);
+----+-------------+------------+--------+------------------------+---------+---------+---------------------------+------+-------------+
| id | select_type | table      | type   | possible_keys          | key     | key_len | ref                       | rows | Extra       |
+----+-------------+------------+--------+------------------------+---------+---------+---------------------------+------+-------------+
|  1 | SIMPLE      | actor      | ALL    | PRIMARY                | NULL    | NULL    | NULL                      |  200 |             |
|  1 | SIMPLE      | film_actor | ref    | PRIMARY,idx_fk_film_id | PRIMARY | 2       | sakila.actor.actor_id     |    1 | Using index |
|  1 | SIMPLE      | film       | eq_ref | PRIMARY                | PRIMARY | 2       | sakila.film_actor.film_id |    1 |             |
+----+-------------+------------+--------+------------------------+---------+---------+---------------------------+------+-------------+
3 rows in set (0.00 sec)
mysql> SHOW STATUS LIKE 'last_query_cost';
+-----------------+------------+
| Variable_name   | Value      |
+-----------------+------------+
| Last_query_cost | 440.999000 |
+-----------------+------------+
1 row in set (0.00 sec)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/758322/viewspace-680925/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/758322/viewspace-680925/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值