2011-02-01 80 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