MySql优化

1.用 not exists 代替 not in Not exists 用到了连接能够发挥已经建立好的索引的作用, not in不能使用索引。 Not in 是最慢的方式要同每条记录比较,在数据量比较大的操作红不建议使用这种方式

2.select * from admin left join log on admin.admin_id = log.admin_id where log.admin_id>10
优化为:
select * from (select * from admin where admin_id>10) T1 lef join log on T1.admin_id = log.admin_id。
使用 JOIN 时候,应该用小的结果驱动大的结果(left join 左边表结果尽量小如果有条件应该放到左边先处理,right join 同理反向),同时尽量把牵涉到多表联合的查询拆分多个 query(多个连表查询效率低,容易到之后锁表和阻塞)。

3.limit 的基数比较大时使用 between
例如: select * from admin order by admin_id limit 100000,10
优化为: select * from admin where admin_id between 100000 and 100010 order by admin_id。

4.尽量避免在列上做运算,这样导致索引失效
例如: select * from admin where year(admin_time)>2014
优化为: select * from admin where admin_time> '2014-01-01′

5.索引尽量少用in like查询,如果使用注意 in在使用的时候注意查询范围如果in的查询范围比较大会导致索引失效,使用like前面不能使用%会导致索引失效

你可能感兴趣的:(mysql)