少用in操作(效率极差),尽量用表关联代替
尽量有where(减少读取量),where操作列尽量有索引(加快查询)
(mysql索引使用B-Tree数据结构对特定列额外组织存放,加快存储引擎查找记录的速度,不需回表查询数据的就是聚簇索引(索引和数据存放在一起)。通常是需要回表再查数据,需要消耗额外的磁盘IO。)
主键是特殊的唯一索引(不含null),唯一索引更好用
复合索引设计合理,比多列索引强。因为多列索引在where中引用时,列顺序非常重要,要满足最左前缀列,左边优先,不一定能构建合理的索引。
(最左前缀:查询条件中的所有字段需要从左边起按顺序出现在多列索引中,查询条件的字段数要小于等于多列索引的字段数,中间字段不能 存在范围查询的字段(<,like等),这样的sql可以使用该多列索引。)
尽量不用like,用like时通配符不开头,尽量建立前缀索引(通配符位置之前的字符串)
尽量不order by
懒得写了,整理一个篇网上的还可以的
1 避免全表扫描
进行全表扫描情况:原文地址:http://blog.csdn.net/longshenlmj/article/details/45222513