mysql复合索引使用规则
命名规则:表名_字段名
- 需要加索引的字段,要在where条件中。
- 数据量少的字段不需要加索引。最窄的字段放在键的左边。
- 如果where条件中是OR关系,必须所有的or条件都必须是独立索引,否则加索引不起作用。见:mysql关于or的索引问题
- 最左匹配原则。
- 只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
之前一直对最左原则理解有问题,认为sql的where条件也必须和索引顺序一致,现在才知道,原来没有关系,mysql会在查询时自动调换条件顺序,使之使用索引的顺序,在此记录下
参考:https://blog.csdn.net/bigtree_3721/article/details/87478706