私は辞書webappを作っています。ユーザーは単語を検索します。これを行う方が速いでしょうか?第2の例でどのフィールド構造がMySQLの定義テーブルに適していますか?
SELECT * from definition WHERE word LIKE "house";
または...
SELECT * from definition WHERE word_hash LIKE md5("house");
、Iはword_hashフィールドの単語のMD5()値を格納します。もちろん、 "word"と "word_hash"はインデックスです。
更新:ワードフィールドが1ワード以上になることがあります。例:SacréBleu
ほとんどの場合、単語の検索が高速になると思われます(長さはハッシュの長さよりも短くなります) –
何らかの理由で定義に複数の単語が含まれる場合はどうなりますか?例:SacréBleu(フランス語) – andufo
私の単語検索の理論(と私はどんなスピードアップが重大ではないだろうと仮定している)が正しいならば、単語はまだまだ高速です。その/それらの単語のハッシュは、 '80d42badd4395b5733ee6e594773776e'であり、結合された単語より少し長い。また、ハッシュのコストを追加していますが、バージョン#1にはハッシュコストがありません。 –