添加一个自动递增的主键并将其命名为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秒内运行。这是与10万字,应该留在那个速度
SELECT *
FROM `whashes`
WHERE hash LIKE "b538baf8573b52b5bcfdd551fffa6e9d"
LIMIT 0 , 30
运行在0.0202秒。
根据我的理解,使用自动递增的主ID整数密钥计算机可以保留大量的ID在缓存中,并对这些值做一些二进制搜索。如果没有像这样的密钥,数据库引擎必须遍历每个值来检查它,相比之下,一次检查将每次需要检查的数量减少一半。然而,这个解释可能稍微不正确,但是如果我错了,其他人可能会解释更多/纠正我。只要做这样简单的事情应该会给你一个很大的改进。
看看'sphinx'搜索 – tradyblix 2013-03-18 07:23:44
做了一个谷歌搜索,不太明白它是如何工作的? – Dexty 2013-03-18 07:39:48