Mysql
MySQL:儲存唯一的 URL
我正在創建一個包含使用者提供的 URL 的表。我希望它們是唯一的,所以當使用者給我一個 URL 時,我將首先檢查該 URL 是否存在,如果存在則返回條目的 ID。如果不使用此 URL 創建一個新行。
顯然我希望這很快。什麼是最好的選擇?
- 將實際 URL 設為 UNIQUE 的 varchar 並通過此 url 查找?
- 製作 URL 的雜湊並將其用作排序的主鍵?
- 其他想法?
我肯定會使用 url 的散列並將散列設為唯一索引。雜湊具有固定長度,因此您可以使用它來指定列的長度,這會比或
CHAR
稍微提高性能。VARCHAR``TEXT
但是我可以建議使用
INSERT IGNORE
而不是對數據庫進行兩次呼叫嗎?就像是:INSERT IGNORE INTO urlTable VALUES ('urlHash');
這樣做的好處是可以忽略因嘗試插入重複雜湊而可能出現的任何重複錯誤,而無需先進行
SELECT COUNT(*)
查詢。