• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql查询优化相关技巧

mysql 搞代码 4年前 (2022-01-09) 29次浏览 已收录 0个评论

使用EXPLAIN语句检查优化器操作 +—-+————-+———-+——-+—————+——+———+——+——+—————– | id | select_type | table | type | possible_keys | key | key_len| ref

本文来源gao!%daima.com搞$代*!码$网9

| rows | Extra +—-+————-

  使用EXPLAIN语句检查优化器操作 +—-+————-+———-+——-+—————+——+———+——+——+—————– | id | select_type | table | type | possible_keys | key | key_len| ref | rows | Extra +—-+————-+———-+——-+—————+——+———+——+——+—————– | 1 |SIMPLE | car_info | range | name | name | 768 | NULL | 9 | Using where; Using index | +—-+————-+———-+——-+—————+——+———+——+——+—————-

  EXPLAIN输出解释

  select_type 有如下几种类型: SIMPLE:未使用连接查询或者子查询的简单select语句 explain select * from car_info;

  PRIMARY:最外层的select语句 explain select * from (select name from car_info where name like ‘凯迪拉克%’) as a;

  +—-+————-+————+——-+—————+——+———+——+——+————-

  | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

  +—-+————-+————+——-+—————+——+———+——+——+—————

  | 1 | PRIMARY | | ALL | NULL | NULL | NULL | NULL | 9 | |

  | 2 | DERIVED | car_info | range | name | name | 768 | NULL | 9 | Using where; Using index |

  +—-+————-+————+——-+—————+——+———+——+——+—————

  UNION:union中的第二个,或后面的select语句 explain select name from car_info where id =100 union select name from web_car_brands where id =5; +——+————–+—————-+——-+—————+———+———+——-+——+– | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +——+————–+—————-+——-+—————+———+———+——-+——+— | 1 | PRIMARY | car_info | const | PRIMARY | PRIMARY | 8 | const | 1 | | | 2 | UNION | web_car_brands | const | PRIMARY,id | PRIMARY | 4 | const | 1 | | | NULL | UNION RESULT |

  DEPENDENT UNION:union中的第二个或后面的色了传统语句,取决于外面的查询

  mysql> explain select * from t3 where id in (select id from t3 where id=3952602 union all select id from t3) ;

  +—-+——————–+————+——–+——————-+———+———+——-+——+——

  | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

  +—-+——————–+————+——–+——————-+———+———+——-+——+–

  | 1 | PRIMARY | t3 | ALL | NULL | NULL | NULL | NULL | 1000 | Using where

  | 2 | DEPENDENT SUBQUERY | t3 | const | PRIMARY,idx_t3_id | PRIMARY | 4 | const | 1 | Using index |

  | 3 | DEPENDENT UNION | t3 | eq_ref | PRIMARY,idx_t3_id | PRIMARY | 4 | func | 1 | Using where; Using index |

  |NULL | UNION RESULT |

  +—-+——————–+————+——–+——————-+———+———+——-+——+-

  UNION RESULT:union的结果 explain select name from car_info where id =100 union select name from web_car_brands where id =5; +——+————–+—————-+——-+—————+———+———+——-+——+—– | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +——+————–+—————-+——-+—————+———+———+——-+——+– | 1 | PRIMARY | car_info | const | PRIMARY | PRIMARY | 8 | const | 1 | | | 2 | UNION | web_car_brands | const | PRIMARY,id | PRIMARY | 4 | const | 1 | | | NULL | UNION RESULT |

  SUBQUERY:子查询中的第一个SELECT语句 explain select name from car_info where id = (select id from web_car_series where id = 5); +—-+————-+—————-+——-+—————+———+———+——-+——+—– | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +—-+————-+—————-+——-+—————+———+———+——-+——+—— | 1 | PRIMARY | car_info | const | PRIMARY | PRIMARY | 8 | const | 1 | | | 2 | SUBQUERY | web_car_series | const | PRIMARY | PRIMARY | 4 | | 1 | Using index | +—-+————-+—————-+——-+—————+———+———+——-+——+—–

  DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询

  explain select name from car_info where id in (select id from web_car_series where id = 5); +—-+——————–+—————-+——-+—————+———+———+——-+——+- | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +—-+——————–+—————-+——-+—————+———+———+——-+——+ | 1 | PRIMARY | car_info | index | NULL | name | 768 | NULL | 145 | Using where; Using index | | 2 | DEPENDENT SUBQUERY | web_car_series | const | PRIMARY | PRIMARY | 4 | const | 1 | Using index | +—-+——————–+—————-+——-+—————+———+———+——-+—–

  DERIVED:在from列表中包含子查询,mysql会递归的执行该子查询,并把结果放在临时表中


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql查询优化相关技巧

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址