对于MySQL中的定义表,哪种字段结构会更好?

时间:2011-10-26 02:27:22

标签: mysql md5

我正在制作字典webapp。用户将搜索单词。这样做会更快吗?

SELECT * from definition WHERE word LIKE "house";

...或

SELECT * from definition WHERE word_hash LIKE md5("house");

在第二个例子中,我将word的md5()值存储在word_hash字段中。当然,“word”和“word_hash”是索引。

更新:有时,单词字段可能超过1个字。示例:SacréBleu

1 个答案:

答案 0 :(得分:1)

完全跳过LIKE会更快。将word的小写版本添加为word_lc,索引word_lc,然后执行:

select * from definition where word_lc = lower(word_you_want)

在没有任何%_通配符的情况下使用LIKE只是一个不区分大小写的相等性测试,因此您应该直接进行不区分大小写的比较,它可以并且将利用索引。此外,像往常一样,说出你的意思,这样电脑就能做你想做的事。