like查询一般会扫描全表,但是dd%会用到索引,但是%dd,不会用到索引
当要建立联合索引的时候,离散度较大的列放到前面。打个比方,如果要建立一个姓名(name)和年龄(age)的联合索引,肯定要把name放到前面(index(name,age)),因为age的范围最多不会超过0-120(全世界没几个人能活到120岁以上吧),而name的情况就有成千上万种了。放到前面的好处就是第一次就能筛掉一大批数据,这样更有利查询的效率。
和foreach一样大的放外面减少cpu的跨层查询
2.索引的连接使用相同的字段
连表查询,要确保两个字段使用相同的字段类型,字符编码也要一样.
3.不要使用order by rand()
这样会给数据库提前留下了一个可怕的查询瓶颈
4.索引字段类型也会影响查询效率
varchar作为索引字段是没有int作为索引效率高,因为内部的索引方式不同
5.相对varchar有限使用enum
enum枚举类型是非常快速紧凑的,在内部就像tinyint一样存储,他们可以包含和显示字符串值