Windows系统文件winmm.dll丢失找不到 下载方法
2025/12/26 12:14:48
这是优化的第一步,无需复杂操作,优先排查这些点:
SELECT *,只查询需要的字段(减少数据传输和内存占用);示例:sql
-- 差:全表扫描+查询所有字段 SELECT * FROM user WHERE name LIKE '%张三%'; -- 优:只查需要的字段+尽量避免左模糊(若必须模糊查询,可考虑全文索引) SELECT id, name, phone FROM user WHERE name LIKE '张三%';sql
-- 差:id字段做运算,索引失效 SELECT * FROM order WHERE id + 1 = 100; -- 优:调整条件写法,利用索引 SELECT * FROM order WHERE id = 99;LIMIT,避免一次性加载过多数据。sql
SET GLOBAL slow_query_log = ON; -- 开启慢查询日志 SET GLOBAL long_query_time = 1; -- 执行时间超过1秒的SQL记录EXPLAIN分析 SQL 执行计划:查看是否使用索引、是否全表扫描、关联方式等;示例:sql
-- 分析这条SQL的执行计划 EXPLAIN SELECT id, name FROM user WHERE age > 20;重点看type字段(越接近const/range越好,ALL代表全表扫描)、key字段(不为 NULL 代表使用了索引)。索引是提升查询速度的核心,但不是越多越好,需精准设计:
id、age,排序的create_time;idx_age_create_time (age, create_time)联合索引,能匹配age、age+create_time查询,但不匹配create_time单独查询;OR连接条件(除非所有字段都有索引);%xxx(左模糊),索引失效(可改用全文索引)。OPTIMIZE TABLE重建;示例:sql
OPTIMIZE TABLE user; -- 优化user表的索引碎片若基础和索引优化后仍不够,需从配置或架构层面优化:
innodb_buffer_pool_size:InnoDB 缓存池大小,建议设为物理内存的 50%-70%(核心参数,缓存表数据和索引,减少磁盘 IO);query_cache_size:查询缓存(8.0 已移除,低版本可适当设置);max_connections:最大连接数,避免因连接数不足导致请求排队;wait_timeout:空闲连接超时时间,释放无用连接。