Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4139
  • 博文数量: 1
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-07 21:51
文章分类

全部博文(1)

文章存档

2014年(1)

我的朋友
最近访客

分类: Mysql/postgreSQL

2014-07-17 21:46:49

SELECT_TYPE:

1)  SIMPLE:简单的SELECT,不实用UNION或者子查询
  1. mysql> explain select * from t2;
  2. +----+-------------+-------+------+---------------+------+---------+------+------+-------+
  3. | id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra |
  4. +----+-------------+-------+------+---------------+------+---------+------+------+-------+
  5. | 1 | SIMPLE | t2  | ALL   | NULL | NULL          | NULL | NULL    | 100  | NULL |
  6. +----+-------------+-------+------+---------------+------+---------+------+------+-------+
  7. 1 row in set (0.00 sec)

2)  PRIMARY:最外层SELECT。
  1. mysql> explain select * from (select * from t2 where id2=2) b;
  2. +----+-------------+------------+------+---------------+------+---------+------+------+-------------+
  3. | id | select_type | table      | type | possible_keys | key  | key_len | ref  | rows | Extra       |
  4. +----+-------------+------------+------+---------------+------+---------+------+------+-------------+
  5. | 1  | PRIMARY     | <derived2> | ALL  | NULL          | NULL | NULL    | NULL | 100  | NULL        |
  6. | 2  | DERIVED     | t2         | ALL  | NULL          | NULL | NULL    | NULL | 100  | Using where |
  7. +----+-------------+------------+------+---------------+------+---------+------+------+-------------+
  8. 2 rows in set (0.00 sec)

3)  UNION:第二层,在SELECT之后使用了UNION。
  1. mysql> explain select * from t1 union select * from t2;
  2. +----+--------------+------------+------+---------------+------+---------+------+-------+-----------------+
  3. | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
  4. +----+--------------+------------+------+---------------+------+---------+------+-------+-----------------+
  5. | 1 | PRIMARY | t1 | ALL | NULL | NULL | NULL | NULL | 10208 | NULL |
  6. | 2 | UNION | t2 | ALL | NULL | NULL | NULL | NULL | 100 | NULL |
  7. | NULL | UNION RESULT | <union1,2> | ALL | NULL | NULL | NULL | NULL | NULL | Using temporary |
  8. +----+--------------+------------+------+---------------+------+---------+------+-------+-----------------+
  9. 3 rows in set (0.00 sec)

4)  DEPENDENT UNION:UNION语句中的第二个SELECT,依赖于外部子查询。

  1. mysql> explain select * from t1 where id1 in (select id2 from t2 where id2<10 union select id3 from t3 where id3<5);
  2. +----+--------------------+------------+------+---------------+------+---------+------+-------+--------------------------+
  3. | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
  4. +----+--------------------+------------+------+---------------+------+---------+------+-------+--------------------------+
  5. | 1 | PRIMARY | t1 | ALL | NULL | NULL | NULL | NULL | 10208 | Using where |
  6. | 2 | DEPENDENT SUBQUERY | t2 | ALL | NULL | NULL | NULL | NULL | 100 | Using where |
  7. | 3 | DEPENDENT UNION | t3 | ref | id3 | id3 | 5 | func | 1 | Using where; Using index |
  8. | NULL | UNION RESULT | <union2,3> | ALL | NULL | NULL | NULL | NULL | NULL | Using temporary |
  9. +----+--------------------+------------+------+---------------+------+---------+------+-------+--------------------------+
  10. 4 rows in set (0.00 sec)

5)  UNION RESULT:UNION的结果。
  1. mysql> explain select * from t1 union select * from t2;
  2. +----+--------------+------------+------+---------------+------+---------+------+-------+-----------------+
  3. | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
  4. +----+--------------+------------+------+---------------+------+---------+------+-------+-----------------+
  5. | 1 | PRIMARY | t1 | ALL | NULL | NULL | NULL | NULL | 10208 | NULL |
  6. | 2 | UNION | t2 | ALL | NULL | NULL | NULL | NULL | 100 | NULL |
  7. | NULL | UNION RESULT | <union1,2> | ALL | NULL | NULL | NULL | NULL | NULL | Using temporary |
  8. +----+--------------+------------+------+---------------+------+---------+------+-------+-----------------+
  9. 3 rows in set (0.00 sec)

6)  SUBQUERY:子查询中的第一个SELECT。

  1. mysql> explain select * from t1 where id1=(select id2 from t2 where id2=2);
  2. +----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
  3. | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
  4. +----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
  5. | 1 | PRIMARY | t1 | const | PRIMARY | PRIMARY | 4 | const | 1 | NULL |
  6. | 2 | SUBQUERY | t2 | ALL | NULL | NULL | NULL | NULL | 100 | Using where |
  7. +----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
  8. 2 rows in set (0.00 sec)

8)  DERIVED:被驱动的SELECT子查询
  1. mysql> explain select * from (select * from t2 where id2=2) b;
  2. +----+-------------+------------+------+---------------+------+---------+------+------+-------------+
  3. | id | select_type | table      | type | possible_keys | key  | key_len | ref  | rows | Extra       |
  4. +----+-------------+------------+------+---------------+------+---------+------+------+-------------+
  5. | 1  | PRIMARY     | <derived2> | ALL  | NULL          | NULL | NULL    | NULL | 100  | NULL        |
  6. | 2  | DERIVED     | t2         | ALL  | NULL          | NULL | NULL    | NULL | 100  | Using where |
  7. +----+-------------+------------+------+---------------+------+---------+------+------+-------------+
  8. rows in set (0.00 sec)















阅读(541) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~