mysql explain结果分析

mysql数据库中的一个表字段是explain,explain这个数字表示mysql必须遍历多少数据才能找到?如果您查询这个字段,您将得到一个错误!explain是mysql中的关键字,用于查询sql的执行计划 。重命名为explain是与select -1一起使用的关键字/语法如下:explain目前公司订单超过百万,使用订单号查询数据时,一般需要1030秒,看了慢查询日志,发现有些订单查询居然要65秒,发现where后面跟了一个or查询 。虽然三个or都被索引了,但是用explain 分析查询结果,发现要扫描近70万行 , 几乎都是扫描一次,最多只能获取三条数据,确实效率很低 , 这三个字段都有索引,但是在这个语句中,使索引无效(主要看最后几行),用unionall代替or查询,也就是分别查询三个字段,用unionall连接结果 , 这样就可以在单个查询中使用索引,效率大大提高,先看看分析的简短结果的sql语句,查询结果不会超过80 ms 。
1、高性能MySQL:剖析单条查询(3【mysql explain结果分析】通过分析单个查询(),我们可以从结果中看到,该查询使用了三个临时表,其中两个是磁盘临时表 , 还有很多读操作(Handler_read_rnd_next)没有使用索引 。假设我们不知道这个视图的具体定义,只能从结果推断查询可能做了多表连接查询,没有合适的索引 。可能其中一个子查询创建了一个临时表,然后与其他表协作 。使用该技术时 , 需要注意的是,SHOWSTATUS本身会创建一个临时表 , 并通过handle操作访问这个临时表,这会影响SHOWSTATUS结果中对应的数字 , 不同版本可能会有不同的表现 。比较通过SHOWPROFILES获得的上一个查询的执行计划 。结果,至少临时表的计数器增加 。你可能会注意到 , 通过EXPLAIN查看查询的执行计划,可以得到大部分相同的信息,但是EXPLAIN是估计得到的结果,而counter是实际测量结果 。比如EXPLAIN不能告诉你临时表是不是磁盘表,这和临时表在内存中的表现有很大区别 。附录D包含了更多关于EXPLAIN的信息 。
2、Mysql建立索引经验在实际开发中使用数据库时,难免会遇到一些大的表格数据 。查询这些数据的时候 , 有时候SQL会特别慢 。这时候有经验的高手会告诉你哪些领域搜索的比较多,加个索引就好了 。那么,如何合理构建指数呢?在此,我想分享一下我的一些经历 。如有不妥之处 , 请批评指正 。1.不要盲目建指数 。先创建一个索引分析可以大大提高我们的查询性能,但是我们也要知道,当你添加、删除或者修改的时候,索引树也要维护 。
3、 mysql之性能指标查询Mysql使用showstatus语句查询Mysql的性能参数 。语法:showstatuslike explain是mysql中的关键字 , 用于查询SQL的执行计划 。重命名explain是与select一起使用的关键字 。explain的语法如下:explainImage-7/Rows表示mysql必须遍历多少数据才能找到,在innodb上是不准确的 。如果Extra是Onlyindex,则表示只从索引树中的信息中检索信息,比扫描整个表要快 。如果用在哪里,就限制在哪里 。如果不可能where是指不需要where,一般是查不出来的 。如果该信息显示使用或使用了temporary,那就非常困难了 , 而且WHERE和ORDERBY的索引往往不能考虑在内 。如果根据WHERE确定索引,那么在order by时必然会导致使用 , 取决于是先筛选后排序划算,还是先排序后筛选划算 。
4、sls采集不到 mysql查询结果1 。查看数据库 , 选择使用数据库,然后查看数据库表,2.在学生数据库中选择一个表stu_score查看数据库表数据,使用explain-2/数据库表 。3.检查数据库中索引的使用情况,并使用命令:showstatuslikeHandler_read%,4.使用关键字分析和存储表 , 分析的结果可以得到准确的信息 。使用命令分析 。

    推荐阅读