首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql SQL执行顺序与EXPLAIN

Mysql SQL执行顺序与EXPLAIN

原创
作者头像
tanoak
发布2018-07-19 20:23:21
2.1K0
发布2018-07-19 20:23:21
举报
文章被收录于专栏:java闲聊java闲聊
  1. SQL关键字执行顺序

FROM—>ON—>JOIN—>WHERE—>GROUP BY—>SUM(聚合函数)—>HAVING—>SELECT—>DISTINCT—>UNION—>ORDER BY—>LIMIT

  1. EXPLAIN 关键字分析

执行 EXPLAIN SELECT * FROM device

加*号重点关注

[\*]select\_type

    SIMPLE:简单SELECT(不使用UNION或子查询等)



    PRIMARY:最外面的SELECT



    UNION:UNION中的第二个或后面的SELECT语句



    DEPENDENT UNION:UNION中的第二个或后面的SELECT语句,取决于外面的查询



    UNION RESULT:UNION的结果。



    SUBQUERY:子查询中的第一个SELECT



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



    DERIVED:导出表的SELECT(FROM子句的子查询)

table

    表名

    

[\*]type

    显示了连接使用了哪种类别,有无使用索引

    结果值从好到坏依次

    system > const > eq\_ref > ref > fulltext > ref\_or\_null > index\_merge > unique\_subquery > index\_subquery > range > index > ALL

    

[\*]possible\_keys

    查询可能使用到的索引都会在这里列出来

    指出MySQL能使用哪个索引在该表中找到行。如果是空的,没有相关的索引



[\*]key

    显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL



[\*]key\_len 

    用于处理查询的索引长度;越短越好、速度越快。在不损失精确性的情况下,长度越短越好



ref

    使用哪个列或常数与key一起从表中选择行



rows

    执行查询时必须检查的行数



[\*]Extra

    解决查询的详细信息

由此select_type的值为all可以得知,我们之前写的SQL语句性能是最差的,因此我们换条SQL语句

EXPLAIN SELECT * FROM device WHERE id=267

可以发现type变成了const,日常写sql可以用这个指标衡量sql的效率

参考网址SQL执行顺序

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档