2026/1/29 0:06:57
网站建设
项目流程
农村建设设计网站,合肥网络优化推广公司,百度医生,合肥网站设计网站一、基础优化#xff08;低成本、立竿见影#xff09;这是优化的第一步#xff0c;无需复杂操作#xff0c;优先排查这些点#xff1a;1. 优化 SQL 语句本身避免全表扫描#xff1a;杜绝 SELECT *#xff0c;只查询需要的字段#xff08;减少数据传输和内存占用#x…一、基础优化低成本、立竿见影这是优化的第一步无需复杂操作优先排查这些点1. 优化 SQL 语句本身避免全表扫描杜绝SELECT *只查询需要的字段减少数据传输和内存占用示例sql-- 差全表扫描查询所有字段 SELECT * FROM user WHERE name LIKE %张三%; -- 优只查需要的字段尽量避免左模糊若必须模糊查询可考虑全文索引 SELECT id, name, phone FROM user WHERE name LIKE 张三%;优化 WHERE 条件避免在字段上做函数 / 运算会导致索引失效示例sql-- 差id字段做运算索引失效 SELECT * FROM order WHERE id 1 100; -- 优调整条件写法利用索引 SELECT * FROM order WHERE id 99;减少子查询改用 JOIN子查询会创建临时表效率低JOIN 更高效LIMIT 限制结果集查询大量数据时如分页必须加LIMIT避免一次性加载过多数据。2. 检查并修复慢查询开启 MySQL 慢查询日志记录执行时间超过阈值如 1 秒的 SQL定位性能瓶颈开启命令临时生效重启失效sqlSET 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 代表使用了索引。二、核心优化索引优化性能提升关键索引是提升查询速度的核心但不是越多越好需精准设计1. 创建合适的索引优先给 WHERE/ORDER BY/GROUP BY 字段建索引比如查询条件中的id、age排序的create_time选择合适的索引类型主键索引PRIMARY KEY必须建InnoDB 默认按主键聚簇存储普通索引INDEX单字段索引适用于简单查询联合索引复合索引多字段组合索引需遵循 “最左前缀原则”示例创建idx_age_create_time (age, create_time)联合索引能匹配age、agecreate_time查询但不匹配create_time单独查询唯一索引UNIQUE适用于唯一字段如手机号、邮箱既能加速查询又能保证数据唯一性。2. 避免索引失效的常见场景字段为 NULL索引不存储 NULL 值尽量给字段设默认值如空字符串联合索引不满足最左前缀使用OR连接条件除非所有字段都有索引模糊查询用%xxx左模糊索引失效可改用全文索引。3. 定期维护索引删无用索引重复索引、未使用的索引会增加插入 / 更新的开销重建碎片索引频繁删除 / 更新数据会导致索引碎片可通过OPTIMIZE TABLE重建示例sqlOPTIMIZE TABLE user; -- 优化user表的索引碎片三、进阶优化配置 / 架构层面适配高并发若基础和索引优化后仍不够需从配置或架构层面优化1. MySQL 配置优化修改 my.cnf/my.ini调整缓存参数innodb_buffer_pool_sizeInnoDB 缓存池大小建议设为物理内存的 50%-70%核心参数缓存表数据和索引减少磁盘 IOquery_cache_size查询缓存8.0 已移除低版本可适当设置调整连接参数max_connections最大连接数避免因连接数不足导致请求排队wait_timeout空闲连接超时时间释放无用连接。2. 架构层面优化读写分离主库写、从库读分散数据库压力适用于读多写少场景分库分表数据量过大如单表千万级时按业务拆分如按用户 ID 分表、按时间分表缓存优化用 Redis 缓存高频查询结果如热门商品、用户信息减少数据库查询次数使用 SSD 硬盘大幅降低磁盘 IO 延迟提升数据读取速度。四、避坑提醒不要盲目加索引索引会降低插入 / 更新 / 删除的速度一张表索引建议不超过 5 个小表无需优化数据量小于 1 万行的表全表扫描可能比索引查询更快避免大事务大事务会占用锁资源导致其他查询阻塞拆分小事务。总结基础优化先优化 SQL 语句避免全表扫描、用 EXPLAIN 分析开启慢查询日志定位瓶颈核心优化给查询 / 排序字段建精准索引遵循最左前缀原则定期维护索引进阶优化调整 MySQL 缓存 / 连接配置高并发场景可做读写分离、分库分表或加缓存。