2019.9.2著
半个月没写了吧 , 最近确实没什么灵感 , 有时候太忙 , 有时候太懒 , 有时候有动力但是又不知道该写点什么。
就来点查询优化吧
查询方式的优化:
-
mysql嵌套子查询效率确实比较低
-
可以将其优化成连接查询
-
连接表时,可以先用where条件对表进行过滤,然后做表连接(虽然mysql会对连表语句做优化)
-
建立合适的索引,必要时建立多列联合索引
-
学会分析sql执行计划,mysql会对sql进行优化,所以分析执行计划很重要
-- 单列索引
CREATE index 索引名称 on 表名(建立索引的字段);
-- 多列索引
create index 索引名称 on 表名(字段1,字段2,字段3);
sql的调优:
-
列类型尽量定义成数值类型,且长度尽可能短,如主键和外键,类型字段等等
-
建立单列索引
-
根据需要建立多列联合索引
-
当单个列过滤之后还有很多数据,那么索引的效率将会比较低,即列的区分度较低
-
如果在多个列上建立索引,那么多个列的区分度就大多了,将会有显著的效率提高。
-
-
根据业务场景建立覆盖索引只查询业务需要的字段,如果这些字段被索引覆盖,将极大的提高查询效率
-
多表连接的字段上需要建立索引,这样可以极大提高表连接的效率
-
where条件字段上需要建立索引
-
排序字段上需要建立索引
-
分组字段上需要建立索引
-
Where条件上不要使用运算函数,以免索引失效