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

问题描述 投票:0回答:1

我正在制作字典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

mysql md5
1个回答
1
投票

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

select * from definition where word_lc = lower(word_you_want)

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

© www.soinside.com 2019 - 2024. All rights reserved.