2011-02-01 78 views
2

对于MySQL speciffically,但我猜的结构是在大多数品牌的SQL的相似。组合索引是否比单个索引大得多?例如,保存INDEX(col1,col2)所需的空间量与保存INDEX(col1)+ INXEX(col2)的空间量是否相同?我现在还没有完全投入到开发中,只是好奇而已。组合索引比单个索引大多少?

+0

需要注意的是在(COL1,COL2)索引,可以通过COL1或col1和col2上进行搜索,而不是由单独COL2。 – 9000 2011-02-01 16:18:00

+0

@ 9000:对,但是当我加入多列时,它工作得更快。 – 2011-02-01 16:23:52

回答

2

对于InnoDB,组合索引的大小大致为col1的大小加上col2的大小再加上表主键的大小(如果使用MyISAM,则大小为4个字节)。使用InnoDB或MyISAM,组合索引应小于两个单独索引,因为使用两个独立索引主键(或4字节行指针)将包含两次(每个索引一次)。

1

没有,它会比这两个指标的总和。多少小取决于各种因素,如果你在表上有一个聚集索引,它的长度和其他一些东西。一般来说:col1和col2越大,指数总和越接近综合指数,因为它们支配了其他因素。

+0

所以,INDEX(COL1,COL2)的大小一般比INDEX(COL1)+ INDEX(COL2)的大小较小,但在排量的增加,该组合索引将变得更接近的大小具有单独的索引的? – 2011-02-01 16:14:19