背景:最近公司有个同事遇到个需求需要用到mysql sleep函数,但结果却大出意料.
测试如下:
表:
CREATE TABLE test_sleep
(
id
int NOT NULL AUTO_INCREMENT,
a
int NOT NULL,
b
int NOT NULL,
PRIMARY KEY (id
),
KEY a
(a
)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
数据:
INSERT INTO test_sleep
VALUES (1, 10000, 1);
INSERT INTO test_sleep
VALUES (2, 20000, 1);
INSERT INTO test_sleep
VALUES (3, 30000, 1);
INSERT INTO test_sleep
VALUES (4, 40000, 2);
INSERT INTO test_sleep
VALUES (5, 50000, 1);
查询sql
为什么第三个查询的时间要5秒?(mysql5.7和8结果是一样的)
看下EXPLAIN
来总结下
查询5秒的sql,使用的是没有加索引的字段以及查询有GROUP BY 和 LIMIT。
在没有使用函数 SLEEP的时候,查询的速度是一样的,使用了sleep函数是五秒,总共数据一共5条,要是1000万呢,慎用mysql函数