首页
学习
活动
专区
圈层
工具
发布

mysql 添加extra

基础概念

MySQL中的EXTRA列是EXPLAIN命令输出的一部分,用于提供关于查询执行过程中的额外信息。这些信息可以帮助开发者理解MySQL是如何执行特定查询的,从而进行性能优化。

相关优势

  • 信息丰富EXTRA列提供了关于查询执行的详细信息,如使用了哪些索引、是否进行了全表扫描等。
  • 性能调优:通过分析EXTRA列的信息,可以发现查询的瓶颈,进而优化查询语句或数据库结构。

类型与应用场景

常见的EXTRA列信息包括:

  • Using index:表示查询使用了覆盖索引(Covering Index),即查询的所有列都在索引中,不需要回表查询。
  • Using where:表示查询使用了WHERE子句进行过滤。
  • Using temporary:表示MySQL需要创建临时表来完成查询,通常发生在复杂的连接查询或分组查询中。
  • Using filesort:表示MySQL需要对结果集进行排序,且无法使用索引完成排序。
  • Using join buffer:表示MySQL使用了连接缓存来优化连接查询。

常见问题及解决方法

问题1:查询使用了Using filesort

原因:当查询需要对结果集进行排序,但无法使用索引完成排序时,MySQL会使用文件排序。

解决方法

  1. 优化查询语句,尽量让排序字段在索引中。
  2. 增加排序缓冲区大小,可以通过设置sort_buffer_size参数来实现。
代码语言:txt
复制
SET GLOBAL sort_buffer_size = 2 * 1024 * 1024; -- 设置为2MB

问题2:查询使用了Using temporary

原因:当查询涉及到复杂的连接或分组操作,且无法使用索引优化时,MySQL会创建临时表。

解决方法

  1. 优化查询语句,尽量减少连接的表数和分组的复杂度。
  2. 增加临时表的大小,可以通过设置tmp_table_sizemax_heap_table_size参数来实现。
代码语言:txt
复制
SET GLOBAL tmp_table_size = 32 * 1024 * 1024; -- 设置为32MB
SET GLOBAL max_heap_table_size = 32 * 1024 * 1024; -- 设置为32MB

问题3:查询使用了Using join buffer

原因:当连接查询无法使用索引优化时,MySQL会使用连接缓存来优化连接操作。

解决方法

  1. 优化查询语句,尽量让连接字段在索引中。
  2. 增加连接缓存大小,可以通过设置join_buffer_size参数来实现。
代码语言:txt
复制
SET GLOBAL join_buffer_size = 2 * 1024 * 1024; -- 设置为2MB

参考链接

通过以上信息,您可以更好地理解MySQL中的EXTRA列,并根据实际情况进行性能优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 数栈技术分享:解读MySQL执行计划的type列和extra列

    例如执行下列语句: mysql> explain select * from lock_test where id=3 or num=4; ​ id为主键,num列上建有普通索引,语句执行时,会通过两个单列索引来处理...一个特例: Explain select * from stu limit 1,1; 二、解读extra 1、using where: 一般有两层意思: 表示通过索引访问时,需要再回表访问所需的数据;...过滤条件发生在server层而不是存储引擎层; 如果执行计划中显示走了索引,但是rows值很高,extra显示为using where,那么执行效果就不会很好。...2、using index condition 表示将过滤下压到存储层执行,防止server层过滤过多数据 如果extra中出现了using index condition,说明对访问表数据进行了优化。...4、using sort_union(indexs) 比如当执行下面语句: ​ Sname和sphone列上都有索引,这时执行计划的extra项就会显示using sort_union(i_sname

    3.3K11

    puppeteer-extra-plugin-stealth 潜行模式

    *在用户代理中添加“HeadlessChrome”只是最明显的一个。 *这个插件的目标是成为木偶师的明确伴侣,以避免 *检测,在它们浮出水面时应用新技术。...*###模块化 *此插件使用“puppeteer extra”的依赖系统仅需要 *为已经启用的规避编写mods代码,以保持模块化和高效。 *“隐身”插件是一个方便的包装器,需要多种[规避技术](..../evasions/console.debug')()) *###贡献 *欢迎PR,如果你想添加一种新的逃避技巧,我建议你 *看看[template](....下面是使用方法: 1.下载puppeteer-extra npm install puppeteer-extra --save 2.下载puppeteer-extra-plugin-stealth npm...": "^3.3.6",     "puppeteer-extra-plugin-stealth": "^2.11.2"   } }

    2.2K20
    领券