怎么查看sql执行的语句有没有索引缺失
时间: 2023-07-04 19:11:57 浏览: 123
可以通过MySQL的`EXPLAIN`命令来查看SQL执行的语句有没有索引缺失。执行`EXPLAIN`命令可以得到MySQL执行SQL的执行计划,包括使用到的索引、扫描的行数、使用的排序方式等等。
具体操作如下:
1. 执行需要优化的SQL语句前加上`EXPLAIN`关键字,例如:
```
EXPLAIN SELECT * FROM table1 JOIN table2 ON table1.id = table2.id WHERE table1.name = 'test';
```
2. 执行上述SQL语句后,可以得到如下类似的执行计划:
```
+----+-------------+--------+------------+--------+---------------+---------+---------+-------------------------------------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+--------+------------+--------+---------------+---------+---------+-------------------------------------+------+----------+-------------+
| 1 | SIMPLE | table1 | NULL | ref | name | name | 33 | const | 1 | 100.00 | Using index |
| 1 | SIMPLE | table2 | NULL | eq_ref | PRIMARY | PRIMARY | 4 | db.table1.id | 1 | 100.00 | NULL |
+----+-------------+--------+------------+--------+---------------+---------+---------+-------------------------------------+------+----------+-------------+
```
执行计划中包括了查询的每个表的信息、查询方式、使用的索引、扫描的行数等等。
3. 查看执行计划中的`possible_keys`和`key`列,如果`possible_keys`中没有需要使用的索引,或者`key`中为NULL,则说明可能存在索引缺失,需要优化查询语句。
通过`EXPLAIN`命令可以帮助我们分析SQL查询的性能瓶颈,找到需要优化的地方。
阅读全文