我的工作將要實施的十六進制值作爲業務鍵(除了自動增量字段作爲主鍵)類似於在Gmail中看到的URL ID的應用。我將爲該列添加一個唯一的約束,並且最初考慮將該值存儲爲bigint以避開搜索varchar字段,但是想知道如果該字段是唯一的,那麼這是否是必需的。MySQL的性能VS獨特BIGINT
內部連接將使用自動遞增現場完成和十六進制值將在where子句過濾中使用。
簡單地將值存儲爲varchar(x),或者將char(x)存儲在額外的工作中,以執行向和從十六進制的轉換以將值存儲爲整數在數據庫中?這值得額外的複雜性嗎?
我做了少量的行(50K)的快速測試和有類似的搜索結果的時間。如果存在很大的性能問題,它會是線性的還是指數級的?
我使用InnoDB作爲引擎。
就個人而言,我真的盡力避免將用戶暴露給用戶界面中的GUID。即使是一個URL線。但是,我會建議在內部使用它們,並通過使用會話或使用特定的代碼來截斷它們以顯示*。這樣&item = 1是我展示的第一個項目...我在內部拉* GUID *。 – Godeke 2009-02-05 00:08:51