show variables like '%slow_query_log%';开启慢查询日志后,我们可以通过以下步骤来查看某一个 sql 语句的执行计划:1. 执行要查询的 sql 语句,并在 MySQL 客户端中输入以下命令:
EXPLAIN select * from table_name where field1=value1;2. 分析执行计划执行计划会给出以下信息:
+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+| 1 | SIMPLE | table_name | ref | field1 | field1| 4 | const| 1 | Using where |+----+-------------+-----------+------+---------------+------+---------+------+------+-------------+其中,每个字段的意义如下:- `id`:SELECT 查询的唯一标识符。- `select_type`:SELECT 查询类型,例如 SIMPLE、PRIMARY、UNION、SUBQUERY 等等。- `table`:查询的表名。- `type`:访问类型,例如 ALL、index、range、ref、eq_ref 等等。- `possible_keys`:可能使用的索引。- `key`:实际使用的索引。- `key_len`:索引字段的长度。- `ref`:索引的哪几行被使用(哪一行的值被用来和索引匹配)。- `rows`:MySQL 计算出需要扫描多少行来找到所需的结果。- `Extra`:额外的说明,例如 Using where、Using index 等等。从上面的执行计划中,我们可以分析出以下信息:- 查询使用到 `field1` 索引。- 只有一行数据会被返回,因为查询条件使用了主键索引。- 没有使用到其他索引。- 优化器使用了 ref 访问方式。通过对执行计划的详细分析,我们可以了解查询 sql 语句的性能,以及如何优化查询性能。在实际应用中,我们需要注意:- 索引是查询语句性能的关键,如果索引使用不当,则会导致查询速度变慢。- MySQL 要先将数据读入内存,然后再执行查询,所以它会占用大量的服务器内存。- 使用 LIMIT 语句可以限制查询返回的结果数量,这可以避免大量的内存占用。总之,在 MySQL 数据库中优化 sql 语句的性能是非常重要的,了解如何查看执行计划可以让我们更好地优化数据库性能。