我正在制作字典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
答案 0 :(得分:1)
完全跳过LIKE会更快。将word
的小写版本添加为word_lc
,索引word_lc
,然后执行:
select * from definition where word_lc = lower(word_you_want)
在没有任何%
或_
通配符的情况下使用LIKE只是一个不区分大小写的相等性测试,因此您应该直接进行不区分大小写的比较,它可以并且将利用索引。此外,像往常一样,说出你的意思,这样电脑就能做你想做的事。