SQL优化
sq编写过程: select dinstinct ..from ..join ..on ..where ..group by ...having ..order by ..limit .. sql解析过程: from .. on.. join ..where ..group by ....having ...select dinstinct ..order by limit ... 避免索引失效 in可能造成索引失效,避免使用in或将in条件放置最后【where name = 'zs' and age in(23,25)】 复合索引使用顺序和创建顺序一致且不跨列使用(最佳左前缀) 复合索引经量全索引匹配(a、b、c全都用上) 避免在索引上进行操作(计算、函数、类型转换...) 复合索引比避免进行不等式判断(!=、<>)、或null判断(is null、is not null) like经量以常量开头,避免以%开头 避免使用or 多表查询 (数据量)小表驱动大表【where 小表.tid = 大表.tid(左小右大)】 索引建立在经常使用的字段上【左连接给左表加索引,右连接给右边加索引】 优化方法: 1.如果主查询数据量大使用in,如果子查询数据量大使用exists 2.order by优化 using filesort有两种算法:单路排序、双路排序(根据io次数判断