自動インクリメントの主キーを追加し、id という名前を付けます。
すべての単語を取り込んで/etc/dict
md5 を実行し、名前とハッシュを書き出すスクリプトを作成して、次のようなものを作成しました。
"2af2fc92ed1ee8080d9ab015ab053074", "Windex's
"bfa818f0cac66108daef757706e97a99", "Windhoek
"88d0e322fb73a2e971bc982bd348c777", "Windows
これを行う私のルートは非常にハックだったので、それを達成する方法を投稿しませんが、全体的には非常に単純で、本質的には以下に基づいていました:
while read line
do
echo $line | md5sum | awk '{print $1}'
done
だから私はデータベーステーブルを作成しました:
CREATE TABLE whashes
(
id int auto_increment primary key,
hash varchar(32),
word varchar(16)
);
そして使用:
INSERT INTO whashes
(hash, word)
VALUES
上記のスクリプトの出力で。速度のテストを実行しています。
SELECT *
FROM `whashes`
WHERE word LIKE "poop"
LIMIT 0 , 30
0.0324 秒で実行されます。これは 100k ワードであり、その速度を維持する必要があります。
SELECT *
FROM `whashes`
WHERE hash LIKE "b538baf8573b52b5bcfdd551fffa6e9d"
LIMIT 0 , 30
0.0202 秒で実行されます。
私の理解では、自動インクリメント プライマリ ID 整数キーを使用すると、コンピューターは大量の ID をキャッシュに保持し、それらの値に対してバイナリ検索を行うことができます。このようなキーがないと、データベース エンジンは各値をループしてチェックする必要がありますが、1 回のチェックでは毎回チェックする必要のある量が半分になります。ただし、この説明は少し間違っている可能性がありますが、他の誰かがさらに説明したり、間違っている場合は修正したりできるかもしれません. このような単純なことをするだけで、大きな改善が得られるはずです。