首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用通配符的SQL文本搜索

使用通配符的SQL文本搜索
EN

Stack Overflow用户
提问于 2013-03-04 17:12:53
回答 1查看 542关注 0票数 0

我必须在我的完全InnoDB MySql数据库的两个字段上进行文本搜索.在过去,我用:

代码语言:javascript
复制
Field1 LIKE %text% OR Field2 LIKE %text%

但是现在我的数据增加了很多,搜索变得太慢了。于是我开始寻找另一个更好的解决方案。

从现在起我试过:

  • 全文索引(匹配(.)) ->不支持领先的通配符
  • 在->中包含不可维护的MySql (只包含Transact-Sql)
  • 反向全文索引->使用领先的通配符,但如果匹配在中间,则不工作。
  • REGEXP ->并不比喜欢的速度更快

我使用MyISAM“阴影表”作为全文索引..。

我不想使用像狮身人面像、Lucene或s.e这样的外部搜索引擎

我的问题是:有什么东西我忘了吗?我在想一个办法让这两种通配符都起作用。就像Oracle中的上下文索引。或者我不知道.这就是我问的原因;)

EN

回答 1

Stack Overflow用户

发布于 2013-03-05 00:18:38

模式中的领先百分比'%‘符号导致执行表扫描,因此,随着数据容量的增加,性能会下降。

请注意,这也反映了,由于非原子性的字段,yor数据不是长时间的“关系型”;您的DB不再是关系型的DataBase,而不能忍受您仍在使用关系数据库作为数据存储引擎。

真正的解决方案是通过将Field1和Field2转换回一组关系型字段(即原子字段)来重构数据表。我知道,对于手头的项目来说,这可能超出了任何合理的范围,但这是解决办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15207098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档