SQL优化
SQL优化的方法:
-
sql查询语句尽不使用select * ,而是具体的字段。
- 节约资源,减少网络开销。
- 减少回表,提高查询效率。
-
避免在where子句中使用or来连接条件。
- or可能会使索引失效,从而进行全表查询。
-
尽量使用数值代替字符串类型。
-
建议使用varchar代替char。
-
对查询进行优化,应该避免全表扫描,在where以及order by涉及的列建立索引。
-
尽量避免索引失效。
- 在where中对字段进行null判断。
- 避免在where中使用or连接查询条件。
- in 和 not in 慎用,尽量用between代替。
- 模糊查询导致全表扫描,用全文索引。
- 尽量避免在where中对字段进行函数操作。
-
inner join left join right join 优先使用inner。
-
提高group by效率,----先过滤,在分组。
-
清空表优先使用trun cate 而不是delete。
- trun cate是对表结构进行操作。(将主键(如:id)也清除)
- delete是逐行进行删除。
-
表连接不易太多,索引不易太多,一般五个之内。
- 联表数量越多编译开销越大。
- 每次关联内存中都会生成一个linshibiao。
- 应该把连接表拆分为多个执行,可读性更高。
-
避免在索引列使用内置函数,会导致索引失效。
-
使用explain分析你的执行计划。
执行计划:
**explain:**可以模拟优化器执行sql查询语句,从而知晓sql是如何处理你的sql语句的,分析你的查询语句或是表结构的性能瓶颈。
EXPLAIN作用:
- 对表的读取的顺序;
- 数据读取操作的操作类型;
- 哪些索引可以被使用;
- 哪些索引已经被使用;
- 表之间的引用;
- 每张表有多少行被优化器查询;
**explain使用:**在select之前加explain,返回执行计划的信息,而不是执行SQL;