我的sql是:select id,name,city,type from company where city=? and type=?
。所以我创建了两个索引:一个是城市字段,另一个是类型字段。所以我的问题是:是否有必要在城市和类型上创建复合索引?如果需要,为什么?两个复合索引btree索引是怎样的?结构VS单索引btree结构。
提前致谢
答案 0 :(得分:0)
是的,在这种情况下,您需要使用复合city + type
索引来获得最大可能的性能。
只要mysql一次只能使用一个索引(少数例外情况,不是这里的情况) - 它只会检查city
或type
以减少所有表数据,然后执行扫描以找到确切的行。
如果你有复合索引 - 那么mysql将能够解决两个city=? and type=?
条件,因此不需要额外的扫描来返回结果集。
两个复合索引btree索引结构VS单索引btree结构如何。
没有2个复合btree结构。如果创建复合索引,则会创建包含两列数据的单个b树结构。这就是复合指数中的顺序很重要的原因。