根据应用场景选择合适的存储引擎是基础。InnoDB 是LAMP环境的主流选择,支持事务处理、行级锁和外键约束,适合大多数需要数据一致性的场景(如电商、社交平台);MyISAM 适合读密集型且无需事务的场景(如静态内容展示),但需注意其表级锁会降低并发写性能。
INT代替VARCHAR存储整数,用DATE代替VARCHAR存储日期),降低存储空间和I/O开销。WHERE子句、JOIN条件和ORDER BY子句中的高频列创建索引(如用户表的username、订单表的order_id)。WHERE status=1 AND create_time>='2025-01-01'),创建复合索引(顺序需与查询条件一致,如(status, create_time))。EXPLAIN命令查看查询执行计划,识别全表扫描、临时表、文件排序等瓶颈(如type列为ALL表示全表扫描)。SELECT id, name FROM users),减少数据传输量和内存占用。INNER JOIN(比LEFT JOIN更高效),减少JOIN次数。LIMIT offset, size的大偏移量(如LIMIT 10000, 10),可通过覆盖索引或子查询优化(如WHERE id > last_id LIMIT 10)。innodb_buffer_pool_size:设置为物理内存的60%-70%(InnoDB的核心缓冲池,缓存数据和索引,直接影响性能)。key_buffer_size:MyISAM的索引缓冲区,设置为物理内存的30%-40%(若使用InnoDB可适当减小)。max_connections根据服务器资源和应用并发量设置(如500-1000),避免过多连接导致内存耗尽;配合连接池(如PHP的PDO连接池)使用,减少连接创建/销毁开销。slow_query_log(记录慢查询),设置long_query_time=2(超过2秒的查询视为慢查询),并定期分析慢查询日志(用mysqldumpslow或pt-query-digest工具)。OPTIMIZE TABLE命令(如每月一次),整理表碎片(尤其是频繁更新的表),提升查询效率。mysqldump或专业工具(如Percona XtraBackup),并测试恢复流程(确保数据可恢复)。query_cache_type=1(查询缓存),但8.0及以上版本已移除,需依赖应用层缓存。innodb_buffer_pool_size从4GB提升至8GB)。user_1、user_2)或垂直拆分(将不同模块的表分开,如将用户表和订单表放在不同数据库),分散数据和查询负载。