0

我的 sql 是:select id,name,city,type from company where city=? and type=?. 所以我创建了两个索引:一个在city字段上,另一个在type字段上。所以我的问题是:我是否需要在city和type上创建一个复合索引?如果需要,为什么?两个复合索引btree索引如何?结构 VS 单索引 btree 结构。提前致谢

4

1 回答 1

0

是的,在这种情况下,您需要有一个复合city + type索引才能获得最大可能的性能。

只要 mysql 一次只能使用一个索引(很少有例外,这里不是这种情况) - 它只会检查citytype减少所有表数据,然后执行扫描以找到确切的行。

如果您有复合索引 - 那么 mysql 将能够解决这两个city=? and type=?条件,因此不需要额外的扫描来返回结果集。

两个复合索引 btree 索引结构 VS 单索引 btree 结构如何。

没有 2 个复合 btree 结构。如果创建复合索引,则会创建包含两列数据的单个 b 树结构。这就是为什么复合索引中的顺序很重要。

于 2012-09-11T23:55:00.820 回答