关于索引:
使用索引的情况:
1.主键必须建立索引(推荐使用数值作为主键,性能最高)
2.外键列也要建立索引
3.经常查询的列建立索引
4.经常出现在where条件中的列建立索引
5.order by、group by、distinct 字段建立索引
6.聚合运算或where条件时,先写有索引的字段
不使用索引的情况:
1.基本不怎么查询的字段
2.重复值比较多的字段(比如:性别、状态等)
3.text、image字段不要索引
4.一张表的索引不要太多(不超过10个)
关于SQL优化:
1.对列的计算尽量避免
2.in查询、or查询 会导致索引失效。可以使用两个语句来代替in或or查询,比如使用union all,例如下图所示
使用下面下面的语句代替上面的or语句,下面的查询会走索引。
3.in换成exists,not in 尽量不用,not in不走索引。
4.is null和is not null两个都不走索引。
5.不等号(<>)不走索引,可以拆分成>和<
6.join时,链接数越少性能越高。
left join时,左表先筛选后再和右表进行关联,可以减少关联数量,提升效率。right jion同理,先对右表筛选后和左表关联。
关联字段最好使用索引。