本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/article/2016/05/31/MySQL优化/
- 为查询缓存优化你的查询
- NOW() 和 RAND()等函数会导致MySQL关闭查询缓存,应避免这种操作,用其他表达替代。
- EXPLAIN 你的 SELECT 查询
- select查询操作的具体过程细节,分析查询过程中可能的多于操作,从而修改SQL语句进行优化。
- 当只要一行数据时使用 LIMIT 1
- 查询到第一条符合条件立即停止搜索,省去查询后面的无用记录的耗时
- 为搜索字段建索引
- 在Join表的时候使用相同类型的列,并将其索引
- 千万不要 ORDER BY RAND():随机数耗资源
- 避免 SELECT *:占内存,分布式的话还占带宽
- 永远为每张表设置一个ID:主键最好是int自动增长,效率高
- 使用 ENUM 而不是 VARCHAR:民族、性别、国家这种有限子串的用枚举,效率高
- 从 PROCEDURE ANALYSE() 取得建议:MySQL的根据表中数据提供的优化建议
- 尽可能的使用 NOT NULL
- Prepared Statements:预编译、批处理、防SQL注入(不支持查询缓存)
- 把IP地址存成 UNSIGNED INT,匹配快
- 固定长度的表会更快
- 垂直分割:把表中不常用的列分到另外的表中
- 拆分大的 DELETE 或 INSERT 语句:(锁表)
- 越小的列会越快
- 选择正确的存储引擎:MyISAM(适用于查询多修改少,表锁)和InnoDB(行锁,事务,适合写)
- 使用一个对象关系映射器(Object Relational Mapper):(延迟加载)
- 小心“永久链接”:数据库连接对象维护(及时关闭连接或连接池对连接对象的重用)
参考博客:http://coolshell.cn/articles/1846.html
本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/article/2016/05/31/MySQL优化/