mysql执行耗时

1.sql执行频率

模糊匹配

,我们可以查看到当前数据库到底是以查询为主,还是以增删改为主,从而为数据库优化提供参考依据。 如果是以查询为主,那么就要考虑对数据库的索引进行优化了。
2.慢日志开启
慢查询日志记录了执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有 SQL语句的日志。 MySQL的慢查询日志默认没有开启,需要我们手动的开启,我们可以查看一下系统变量 slow_query_log。

如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:
1 2 3 4 5 6 7 8 9 10 11 12
| slow_query_log = 1
long_query_time = 2
systemctl restart mysqld
g
cat /var/lib/mysql/localhost-slow.lo
|
-
– 查看慢日志文件中记录的信息
cat /var/lib/mysql/localhost-slow.lo
- 我们可以执行一条比较耗时的SQL语句(耗时超过指定的2s),然后看慢查询日志是否记录了相关信息。

3.执行计划
1 2 3 4 5 6
| explain SELECT id,user_id,serve_item_name FROM orders_0 WHERE (orders_status = 0 AND user_id = 1716346406098296832 AND display = 1 and sort_by<1698924600022) ORDER BY sort_by DESC LIMIT 10
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [ { "id": 1, 每个查询步骤的唯一标识符 "select_type": "SIMPLE", 查询的类型,例如 SIMPLE(简单查询)或 PRIMARY(主查询,嵌套子查询的最外层查询)。 "table": "orders_0",查询涉及的表。 "partitions": null, 使用的分区(如果有分区表的话) "type": "range",查询使用的连接类型,例如 ALL(全表扫描)或 index(索引扫描)。 "possible_keys": "query_index_0,query_index_1",可能用于此查询的键列表。 "key": "query_index_0",实际用于此查询的键。 "key_len": "26",实际用于此查询的键。 "ref": null,显示索引的哪一列被用于查询。 "rows": 1,MySQL 估计将需要读取的行数。 "filtered": 100,在表中的行数的百分比,表示查询的条件有多少行满足。 "Extra": "Using where; Using index" 其他的额外信息,例如使用了哪些索引、是否使用了文件排序等。 } ]
|