Mysql

InnoDB 中 Varchar(100) 上 MySQL 索引的儲存需求是什麼?

  • February 6, 2014

我有一個 InnoDB 表,其中有 EMail 列 (VARCHAR(100)),現在我將執行腳本,該腳本將散列一些電子郵件地址。我想知道,如果數據儲存存在差異(例如電子郵件的平均長度為 20 個字元,雜湊後為 64 個字元),索引儲存也會有差異嗎?

我之前討論過為 InnoDB 設置大的主鍵:我應該為這個 MySQL 表使用什麼儲存引擎?. 效果將是膨脹的鍵經歷所有輔助索引的線性增長,因為來自輔助鍵索引條目的 PRIMARY KEY 引用也將開始變得臃腫。

查看您的問題,您自己是說您將電子郵件地址從 20 個字元擴展到 64 個字元。您將膨脹具有電子郵件地址列的相關表的每個非唯一索引。如果電子郵件地址本身是主鍵,那麼無論索引是否具有電子郵件地址列,相關表的所有索引。Mysql int vs varchar as primary key (InnoDB Storage Engine?

CHAR 欄位比 VARCHAR 欄位讀取速度快已經夠糟糕了,但代價是索引更大(請參閱我的文章What is the performance impact of using CHAR vs VARCHAR on a fixed-size field?)。這樣做肯定會帶來配置挑戰,包括

即使電子郵件地址沒有被索引,該 InnoDB 的數據頁面仍然會膨脹並且可能會出現碎片。既然你在散列,我可以假設你一定是在索引它。

引用自:https://dba.stackexchange.com/questions/58377