略记一次MySQL优化实践.
效果:加载过程从5分钟到0.5秒
实践:需要代码和SQL结合进行优化过程
方法:
1.从Profile和Explain对索引和排序效率分析。索引类型至少到Ref级别,排序不应用到临时表和文件排序,保证在内存中进行.此操作可提升至1.5分钟.
2.SQL中保证WHERE条件只出现一次,若SQL中包含了视图,那么视图中的WHERE条件,应提取出来放在外层,并且视图也需要从第1步开始进行优化.
遇到的问题:
1.视图中带WHERE条件会导致Count方法超慢,要么物化,要么去掉WHERE,优选后者.
2.在Profile信息中,creating sort index有时会占据90%的时间,应使用索引排序,避免文件排序和临时表排序.
3.多表的JOIN连接影响性能很小,可以忽略不计.
4.WHERE条件比JOIN ON条件更好,条件尽量外放WHERE里.
5.待续...