【问题标题】:mysql composite index thoerymysql复合索引理论
【发布时间】:2012-09-11 23:51:53
【问题描述】:
我的 sql 是:select id,name,city,type from company where city=? and type=?。所以我创建了两个索引:一个在city字段上,另一个在type字段上。所以我的问题是:我是否需要在city和type上创建一个复合索引?如果需要,为什么?两个复合索引btree索引如何?结构 VS 单索引 btree 结构。
提前致谢
【问题讨论】:
标签:
mysql
composite-index
【解决方案1】:
是的,在这种情况下,您需要有一个复合 city + type 索引才能获得最大可能的性能。
只要mysql一次只能使用一个索引(很少有例外,这里不是这种情况)-它只会检查city或type以减少所有表数据,然后执行扫描以找到确切的行。
如果您有复合索引 - 那么 mysql 将能够同时解析 city=? and type=? 条件,因此不需要额外的扫描来返回结果集。
二合索引btree索引结构VS单索引btree结构如何。
没有 2 个复合 btree 结构。如果创建复合索引,则会创建包含两列数据的单个 b 树结构。这就是复合索引中的顺序很重要的原因。