我主要使用這三個表來實現在MySQL倒排索引:奇怪的MySQL表大小
WORDS (word_id, word)
INSTANCES (word_id, doc_id)
DOCUMENT (id, text)
其中word_id
是INT
和doc_id
是BIGINT
於是,我試圖去規範的文字和INSTANCES表到一個:
INSTANCES_NEW (word, doc_id)
其中一句話是現在VARCHAR(50)
和doc_id
是BIGINT
表INSTANCES和INSTANCES_NEW同時具有兩個索引word_id/word
和doc_id
。對於相同的數據,INSTANCES顯示爲146MB,而INSTANCES_NEW顯示爲122.7MB。 INT
如何比VARCHAR(50)
佔用更多空間?幾乎所有的單詞至少需要3個字符 - 理論上所用的空間應該增加一倍以上。
感謝您的回覆。這是一個SHOW TABLE STATUS結果: [鏈接](http://pastebin.com/SFMgrVL8) – dscer 2012-01-09 20:27:02
這非常有趣。爲什麼字符串而不是整數的索引較小? – dscer 2012-01-09 21:51:14
你能告訴我你的索引是什麼嗎?如果我理解的很好,你沒有在整數和字符串上的索引,但在兩列上的複合索引... – 2012-01-09 22:16:10