mysql中的查询优化

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一样存储,他们可以包含和显示字符串值

原文地址:https://www.cnblogs.com/hanshuai0921/p/6595557.html