基本概要html
1.查询的模糊匹配时,避免使用Like '%开头',使得索引失效shell
2.索引问题缓存
◆ 避免对索引字段进行运算操做和使用函数性能优化
◆ 避免在索引字段上使用not,<>,!=并发
◆ 避免在索引列上使用IS NULL和IS NOT NULL函数
◆ 避免在索引列上出现数据类型转换性能
◆ 避免创建索引的列中使用空值 索引须要慎重考虑优化
◆ 建索引须要慎重考虑,最好不要超过6个,已经建好的在这基础上建.net
3.复杂操做:嵌套多级子查询,拆分红几步,能够生成一些临时数据表,再进行关联操做htm
4.Update:同一张表的修改避免屡次,而且不要Update所有字段
5.在能够使用UNION ALL的语句里,使用了UNION
6.对Where 语句的法则:
(1)避免在WHERE子句中使用in,not in,or 或者having,能够使用 exist 和not exist代替
(2) 不要以字符格式声明数字,会使得索引无效;
7.对Select语句的法则,避免使用*
8.排序:避免使用耗费资源的操做,带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎 执行,耗费资源的排序(SORT)功能. DISTINCT须要一次排序操做, 而其余的至少须要执行两次排序
————
9.先 truncate后 drop
10.尽可能避免大事务操做,提升系统并发能力
————
11.访问频繁而且不太会改变的数据设置缓存
12.EXPLAIN 你的 SELECT 查询
13.LIMIT限制须要的行数
14.Where子句字段设置索引
15.选择正确的存储引擎
参考归纳:
SQL性能优化十条经验:http://database.51cto.com/art/200904/118526.htm
MYSQL性能优化的最佳20+条经验:https://coolshell.cn/articles/1846.html
SQL优化大总结之 百万级方案:http://www.javashuo.com/article/p-fxaxlhna-y.html