3
如果我在MySQL表中有一列short_title
並且它被定義爲UNIQUE,那麼我是否還必須添加FULLTEXT才能使其搜索速度非常快?或者UNIQUE已經保證它可以快速搜索(沒有全表掃描)?在MySQL中將UNIQUE索引用作varchar列的快速查找嗎?
謝謝,博達Cydo
如果我在MySQL表中有一列short_title
並且它被定義爲UNIQUE,那麼我是否還必須添加FULLTEXT才能使其搜索速度非常快?或者UNIQUE已經保證它可以快速搜索(沒有全表掃描)?在MySQL中將UNIQUE索引用作varchar列的快速查找嗎?
謝謝,博達Cydo
UNIQUE
將使用相關指數定位逐字short_title
。
如果您需要單詞匹配(而不是逐字匹配),請使用FULLTEXT
索引。
另請注意,默認情況下,MyISAM
中的B-Tree
索引與VARCHAR
列中的索引均受密鑰壓縮。這會減慢搜索標題更接近字母表的末尾:
最後,VARCHAR
鍵趨於大型化。
對於最快的逐字搜索,你應該存儲MD5
哈希的稱號在BINARY(16)
列,創建一個UNIQUE
指數超過它(禁用鍵壓縮),並搜索哈希值。
我明白了。感謝你的回答。但這是否意味着我必須在short_title列上同時使用UNIQUE和FULLTEXT索引,才能使其成爲UNIQUE並同時快速搜索? – bodacydo 2010-02-25 04:17:29
我明白了。我在做逐字匹配(我想我理解它是正確的 - 它匹配整列),所以我只需要唯一索引。 :) – bodacydo 2010-02-25 06:34:25