我有这张桌子:
bussId | nameEn | keywords
500 name1 name2 keyword1 keyword2
如果用户搜索(keyword1或keyword2或name2或name1),我想返回bussId 5000.
所以我应该使用这个查询SELECT * FROM business WHERE nameEn LIKE’%searching_word%’.
但是这个查询不使用索引nameEn或关键字,根据Comparison of B-Tree and Hash Indexes“如果LIKE的参数是一个不以通配符开头的常量字符串,索引也可以用于LIKE比较”.
我有这个解决方案,我想创建另一个表并插入所有单个单词:
bussId | word
500 name1
500 name2
500 keyword1
500 keyword2
然后我将使用此查询搜索bussId:
SELECT * WHERE单词LIKE’tracked_word%’.
通过这种方式,我将确保MySQL将使用索引,它会更快,但这个表将包含大约2000万行!
还有其他解决方案吗?
|