企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **Mysql关于Sql语句分析是否走索引问题讨论** ## <blockquote class="danger"><p>答案: 使用EXPLAIN + SQL语句,分析查询结果集 如图所示 ![](https://img.kancloud.cn/94/19/9419ec1d4f7b462135d2a5b54658a17a_1395x502.png) 我们把比较重要的参数提取出来进行详细讲解一下: * [ ]     **id** 选择标识符 * [ ]     **select_type** 查询中每个select子句的类型 1. SIMPLE:简单select语句,不实用union或子查询等 2. PRIMARY:查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY 3. UNION:UNION中的第二个或后面的SELECT语句 4. UNION RESULT:UNION的结果 5. SUBQUERY:子查询中的第一个SELECT * [ ]     **table** 查询的表名 * [ ]     **partitions** 匹配的分区 * [ ]     **type** 表示连接类型,类型有ALL、index、range、 ref、eq_ref、const、system、NULL,这几种类型从左到右,性能越来越高。一般一个好的sql语句至少要达到range级别。all级别应当杜绝 * [ ] **possible_keys** 表示查询时,可能使用的索引 * [ ] **key** 显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL * [ ] **key_len** 显示的值为索引字段的最大可能长度,并非实际使用长度 * [ ] **ref** 连接匹配条件,即哪些列或常量被用于查找索引列上的值 * [ ] **rows** 显示MySQL认为它执行查询时必须检查的行数。 * [ ] **filtered** 按表条件过滤的行百分比 * [ ] **extra** 表示详细说明,注意该值包含十分重要的信息。一般该列存在下列值,常见的不太友好的值有:Using filesort(排序时无法使用到索引), Using temporary(表示使用了临时表存储中间结果)