2014-12-04 31 views
1

我正在索引一個有關varchar(3000)的描述的MySQL表。我收到了你期望看到的典型錯誤,如:ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.MySQL max varchar索引長度超過3072字節。這怎麼可能?

這不會混淆爲閱讀其他帖子(例如here),我可以使用的最大長度是MyISAM中的varchar(255)或InnoDB中的3072字節。令我困惑的是,多年來,我已經能夠索引更大的varchar列(5000個以上),但這種能力現在已經停止。我最近做了一個改變,導致了其他一些問題(大部分已經修復),一直在安裝MySQL集羣。我還沒有使用這個,但我想安裝與默認的MySQL安裝擰。

如果任何人有任何想法,我怎麼能夠索引這樣的大列之前,我會很感興趣知道。謝謝。

回答

0

該文檔是在這裏 http://dev.mysql.com/doc/refman/5.0/en/create-index.html

前綴支持和前綴(如果支持)的長度是存儲 引擎依賴性。例如,對於MyISAM表,前綴長度可以高達1000字節, ,對於InnoDB表,前綴長度可以高達767字節。 NDBCLUSTER 存儲引擎不支持前綴(請參見第17.1.5.6節, 「MySQL集羣中不支持或缺少的功能」)。

您可能以前使用過全文索引?

http://dev.mysql.com/doc/refman/5.6/en/innodb-fulltext-index.html

+0

可惜我不能張貼圖片,但我仍然有索引的VARCHAR列有一個3000的限制。這不應該被允許嗎? – 2014-12-04 16:14:38

+0

什麼顯示來自'table'的索引顯示 - 它可能只有前767被索引 – exussum 2014-12-04 16:26:21

+0

'Cardinality:16949345; Sub_part:1000; INDEX_TYPE:BTREE'。猜測sub_part是指767?如果是這種情況,我如何在索引列超過限制的列之前將其返回給系統(大概是這樣),它會自動索引第一個767? – 2014-12-04 16:53:31

相關問題