出现using temporary的原因是因为MySQL在执行查询时需要创建临时表来存储部分结果集,通常是因为查询中包含了ORDER BY或GROUP BY等操作需要对数据进行排序或分组。 要解决这个问题,可以尝试以下几种方式: 优化查询语句:尽量避免在查询中使用不必要的排序和分组操作,可以考虑优化查询条件、创建索引等方式来提高查询性能。 调整服
通过explain查看sql的执行计划时,Extra字段的值往往会看到Using where; Using index; Using temporary; Using filesort 一、using filesort 在使用order by关键字的时候,如果待排序的内容不能由所使用的索引直接完成排序的话,那么mysql有可能就要进行文件排序。 【这个 filesort 并不是说通过磁盘文件进行排序,而只是告...
Using temporary表示由于排序没有走索引、使用union、子查询连接查询、使用某些视图等原因(详见https://dev.mysql.com/doc/refman/5.6/en/internal-temporary-tables.html),因此创建了一个内部临时表。注意这里的临时表可能是内存上的临时表,也有可能是硬盘上的临时表,理所当然基于内存的临时表的时间消耗肯定要比基于...
除了知道排序的流程之外,排序使用的是字段的定义最大长度,而不是实际存储的长度,所以会花费更多的空间。 另外在5.6之前的版本,如果涉及到多表关联查询,排序字段来自不同表的话,会将关联结果保存到临时表中,这就是我们平时看到using temporary;using filesort的场景,如果这时候再使用limit,limit将会发生在排序之后,这样...
出现using temporary的原因是因为MySQL在执行查询时需要创建临时表来存储部分结果集,通常是因为查询中包含了ORDER BY或GROUP BY等操作需要对数据进行排序或分组。 要解决这个问题,可以尝试以下几种方式: 优化查询语句:尽量避免在查询中使用不必要的排序和分组操作,可以考虑优化查询条件、创建索引等方式来提高查询性能。
MySQL 5.6 添加了对 EXPLAIN INSERT/UPDATE/DELETE 的支持,在5.7中对 EXPLAIN 代码做了一些改进并且5.7 添加了对 EXPLAIN FOR CONNECTION 的支持,但是在老的版本5.6中对单表的update执行计划会显示使用临时表(Using temporary) 测试环境 CentOS Linux release 7.6.1810 (Core) ...
其次将extra一栏的Using temporary(临时表)、Using filesort(文件排序)拖出去砍了 一、第一条语句 explainselect*fromtb_wm_shopwhereis_delete!=1andis_authentication=1ORDERBYcreate_timeDESC 大家应该知道使用order by的 字段要使用索引,这条语句中create_time已经创建了索引,但是计划中并没有使用该索引,导致出现...
当查询中包含ORDER BY或者LIMIT时,MySQL会使用临时表来排序或限制结果集。 当查询的表中有大量数据需要排序或者连接时,MySQL可能会使用临时表来处理。 当查询中使用了临时表或者内存表时,MySQL也会显示using temporary。 本网站发布或转载的文章均来自网络,其原创性以及文中表达的观点和判断不代表本网站。
如果查询中没有排序没有group by仍然using temporary可以尝试group by 主键 排除。 那么,对于上面例子中的第一条语句,我们需要对jos_categories的id进行排序,可以将SQL做如下改动: mysql>explainselectB.id,B.title,A.titlefromjos_categoriesAleftjoinjos_contentBonA.id=B.catidleftjoinjos_sectionsConB.sectionid=...
51CTO博客已为您找到关于using temporary怎么优化的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及using temporary怎么优化问答内容。更多using temporary怎么优化相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。