MySQL 是面试中必问的模块,而 MySQL 中的优化内容又是常见的面试题,所以本文来看“工作中优化MySQL的手段有哪些?”。
工作中常见的 MySQL 优化手段分为以下五大类:
索引优化包含以下内容:
-- 原始查询(需回表)
SELECT * FROM orders WHERE user_id = 100;
-- 优化为覆盖索引
ALTER TABLE orders ADD INDEX idx_user_status (user_id, status);
SELECT user_id, status FROM orders WHERE user_id = 100;
只查询需要的字段,减少数据传输和内存占用:
-- 不推荐
SELECT * FROM products;
-- 推荐
SELECT id, name, price FROM products;
大数据量分页时,避免 LIMIT 100000, 10,而是使用上次查询 ID 作为起始 ID 进行查询:
-- 原始分页(性能差)
SELECT * FROM logs ORDER BY id LIMIT 100000, 10;
-- 优化:使用游标分页(记录上一页最后一条的 id)
SELECT * FROM logs WHERE id>100000 ORDER BY id LIMIT 10;
【图片来源于网络,侵权可删】
例如以下示例:
-- 小表(emp)驱动大表(dept)
SELECT * FROM emp
INNER JOIN dept ON emp.dept_id = dept.id;
长事务会导致锁竞争和回滚段膨胀:
-- 不推荐:事务中包含耗时操作
BEGIN;
UPDATE account SET balance = balance - 100 WHERE id = 1;
-- 执行其他耗时操作...
COMMIT;
-- 推荐:尽快提交事务
使用批量插入代替逐条插入:
-- 不推荐
INSERT INTO logs (msg) VALUES ('a');
INSERT INTO logs (msg) VALUES ('b');
-- 推荐
INSERT INTO logs (msg) VALUES ('a'), ('b');
数据量比较大时,可采取以下措施:
MySQL 常见的优化手段包含 5 大类,索引优化、SQL 优化、事务和锁优化、架构优化和硬件及配置优化。你还知道哪些优化手段呢?欢迎评论区留下你的答案。