1、Sql优化主要优化的还是查询, 优化查询的话, 索引优化是最有效的方案。
首先要根据需求写出结构良好的SQL,然后根据SQL 在表中建立有效的索引。但是如果索引太多,不但会影响写入的效率,对查询也有一定的影响。
定位慢SQL然后并优化
这是最常用,每一个技术人员都应该掌握基本的SQL调优手段(包括方法、工具、辅助系统等)。这里以MySQL为例,最常见的方式是,由自带的慢查询日志或者开源的慢查询系统定位到具体的出问题的SQL,然后使用explain。profile等工具来逐步调优,最后经过测试达到效果后上线。
explain + sql语句查询sql执行过程, 通过执行计划,我们能得到哪些信息:
A:哪些步骤花费的成本比较高
B:哪些步骤产生的数据量多,数据量的多少用线条的粗细表示,很直观
C:每一步执行了什么动作
优化索引
(1)索引列务必重复度低, where条件字段上需要建立索引
(2)使用索引就不能用OR查询,否则索引不起作用
(3)使用索引,like模糊查询不能以%开头
(4)查询条件务必以索引列开头,否则索引失效
(5)复合索引遵守最左原则。
避免索引失效
A:尽量不要在where 子句中对字段进行null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
B:应尽量避免在where 子句中使用!= 或<> 操作符,否则将引擎放弃使用索引