一.什么是Using temporary ; Using filesort 1. using filesort filesort主要用于查询数据结果集的排序操作,首先MySQL会使用sort_buffer_size大小的内存进行排序,如果结果集超过了sort_buffer_size大小,会把这一个排序后的chunk转移到file上,最后使用多路归并排序完成所有数据的排序操作. MySQL filesort有两种使用模式: 模式1: sort的item保存了所需要的所有字段,排序完成后,没有必要再…
优化GROUP BY语句   默认情况下,MySQL对所有GROUP BY col1,col2...的字段进行排序.这与在查询中指定ORDER BY col1,col2...类似.因此,如果显式包括一个包含相同的列的ORDER BY子句,则对MySQL的实际执行性能没有什么影响. 如果查询包括GROUP BY 但用户想要避免排序结果的消耗,则可以指定ORDER By NULL禁止排序,例如:explain select id, sum(moneys) from sales2 group by i…
遇到一个SQL执行很慢 SQL 如下: SELECT ... FROM tableA WHERE time >= 1492044535 and time <= 1492046335 GROUP by time, sourceName, serverSite,clientSite; SELECT 部分忽略没写,是因为通常SQL执行慢不会跟这部分有关系,至少我没见过. 该语句非常简单,但是执行太慢.所以我们看一下执行计划 执行计划有几个字段我们比较关注: type:range possible_k…
创建表,字段tid上无索引(mysql 5.7) CREATE TABLE `test` ( `tid` int(11) DEFAULT NULL, `tname` varchar(12) DEFAULT NULL, `test_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `tvalue` varchar(90) DEFAULT NULL, `CreateTime` datetime DEFAULT CURRENT_TIMESTAMP CO…
转载链接:  mysql explain用法 官网说明:     http://dev.mysql.com/doc/refman/5.7/en/explain-output.html 参数:  http://www.jb51.net/article/38357.htm explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了,如: explain ; explain列的解释…
原文:http://www.cnitblog.com/aliyiyi08/archive/2008/09/09/48878.html 一.语法 explain < table_name > 例如: explain select * from t3 where id=3952602; 二.explain输出解释 +----+-------------+-------+-------+-------------------+---------+---------+-------+------+--…
对于经常使用mysql的兄弟们,对explain一定不会陌生.当你在一条SELECT语句前放上关键词EXPLAIN,MySQL解释它将如何处理SELECT,提供有关表如何联合和以什么次序的信息.借助于EXPLAIN,你可以知道1)你什么时候必须为表加入索引以得到一个使用索引找到记录的更快的SELECT.2)你也能知道优化器是否以一个最佳次序联结表.为了强制优化器对一个SELECT语句使用一个特定联结次序,增加一个STRAIGHT_JOIN子句.官方的关于explain的文档在http://dev…
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看.所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用.(QEP:sql生成一个执行计划query Execution plan) my…
explian命令可以显示select语句的执行计划 explain的结果中每行对应select语句中的一个表,输出结果中的顺序是按照语句处理表的顺序. mysql使用嵌套循环来处理所有的join连接. 当使用了关键字extended后,explain可以查看到"show warnings"语句的内容,以及被过滤的列. 关键字"extented"和"partitions"不能一起使用,在5.6.5之后,这两个关键字都不可以和"forma…
explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 先解析一条sql语句,看出现什么内容 EXPLAINSELECTs.uid,s.username,s.name,f.email,f.mobile,f.phone,f.postalcode,f.addressFROM uchome_space ASs,uchome_spacefieldASfWHERE 1 AND s.groupid=0AND s.uid=f.uid 1. i…