SQL优化实战
2025/04/19
一、从缓冲池看查询
-- 创建test表,非常简单
CREATE TABLE test (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键,自增',
val INT NOT NULL COMMENT '分类',
data VARCHAR(100) COMMENT '数据',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (id),
INDEX idx_val (val),
INDEX idx_create_time (create_time)
) ENGINE=InnoDB
-- 清理一下之前的数据
DELETE FROM test;
DROP PROCEDURE IF EXISTS insert_million_records;
-- 创建存储过程,插入1kw条数据
DELIMITER //
CREATE PROCEDURE insert_million_records()
BEGIN
DECLARE i INT DEFAULT 1;
START TRANSACTION;
WHILE i <= 10000000 DO
INSERT INTO test (val, data) VALUES (FLOOR(RAND() * 100), CONCAT('data_', i));
SET i = i + 1;
END WHILE;
COMMIT;
END //
DELIMITER ;
-- 调用存储过程
CALL insert_million_records(); 
二、进一步分析?
三、怎么让查询更快?
1. 深入剖析执行计划
2. 资源监控:别光看耗时
3. 复杂场景的优化:不止单表
4. 索引优化:选对索引很重要
5. 跨数据库对比:MySQL不是唯一选择
6. 业务场景的延伸:从流水表到订单表
7. 数据增长的应对:未雨绸缪
8. 踩坑总结:失败是成功之母
四、写在最后
最后更新于