1、单索引和复合索引
单个索引是指索引列是一列,用户可以在多个列中建立索引,这些索引称为复合索引,也称为组合索引。
数据库操作中复合索引的开销很小,可以代替多个单索引。
2、建立复合索引
创建索引:
createindexidx1ontable1(col1、col2、col3) )。
查询(使用索引) :
选择*从表1 where col1=aand col2=band col3=c
此时,查询优化程序使用索引查询,而不是扫描所有表。
3、复合索引使用注意事项:索引最左匹配原则
对于复合索引,在使用查询时,最好按照搜索索引的顺序排列条件,如select * from table1where col1=aand col2=band col3=d。 如果使用where col2=B AND col1=A或where col2=B,则不使用索引。
mysql创建复合索引的规则首先对复合索引的最左侧(即第一个name字段)的数据进行排序,然后根据第一个字段的排序对第二个age字段进行排序。
实际上实现了order by name age这样的排序规则。
因此,第一个name字段是绝对有序的,第二个字段是无序的。 因此,在直接使用第二个age字段进行条件确定时,索引通常不可用。 因为这被称为mysql,所以需要强调最左前缀原则。
那么,age字段的索引什么时候可用? 当然,前提是age字段的索引数据也只能在规则的情况下使用,但什么时候会规则呢? 据观察,当name字段为等值且一致时,age是规则的。
这意味着,在mysql索引规则中,复合索引要使用第二个索引,必须先使用第一个索引,第一个索引必须是等值匹配的。