KEY `idx_XXX` (`col1`,`col2`) USING BTREE |
索引的底层是B+树结构,联合索引的结构也是B+树,只不过键值数量不是一个,而是多个,但是由于构建一颗B+树只能根据一个值来构建,因此数据库依据联合索引最左的字段来构建B+树;(通俗来讲就是col1和col2组成联合索引,但B+树只能从里面二选一来构建索引,所以,MySQL就选择了col1来构建B+树索引,即最左侧的列来构成联合索引,所以就叫做最左匹配原则)
当我们执行:where col1 = xxxx或者where col1 = xxxx and clol2 = xxxx时,MySQL都会使用联合索引,而where col2 = xxxx则不会使用索引,而是全表扫描;