【发布时间】:2012-01-03 06:56:10
【问题描述】:
我在 stackoverflow 上寻找过这个问题,但没有找到真正好的答案。
我有一个 MySQL 数据库,其中包含一些包含特定产品信息的表。当最终用户在我的应用程序中使用搜索功能时,它应该搜索特定列中的所有表。
由于连接和许多 where 子句的性能不太好,我创建了一个存储过程,它将这些表和列中的所有单个单词拆分,并将它们插入到表中。它是“word”和“productID”的组合。 该表现在包含超过 330 万条记录。
目前,如果我匹配整个单词或单词的开头(LIKE 'searchterm%'),我可以快速搜索。这很明显,因为它现在使用索引。
但是,我的客户想要搜索部分单词(LIKE '%searchterm%')。这根本没有表现。 FULLTEXT 搜索也不是选项,因为它只能搜索单词的开头,后面有通配符。
那么,这样的搜索功能的最佳做法是什么?
【问题讨论】:
-
在 SQL 查询中使用前导通配符优化 LIKE 搜索确实没有什么好方法。
标签: mysql search search-engine large-data