【问题标题】:Speed up rails like query像查询一样加快rails
【发布时间】:2017-08-24 20:30:07
【问题描述】:

如何加快使用 SQL like 的字符串匹配查询?代码看起来像

CurrentSchool.all.includes(:school).where(is_middle_school: true).where("name like '%#{search}%'")

这是搜索框建议查询,必须快速获得良好的用户体验。

【问题讨论】:

  • 您使用的是哪个数据库? name 字段是否已编入索引?
  • 我正在使用 MySQL 数据库。在列上添加索引会提高性能吗?
  • 你的数据库有多大?
  • 尝试使用CurrentSchool.all.includes(:school).where(is_middle_school: true).where("name like '%#{search}%'").explain。它将显示检查了多少行。添加索引后,可以再次运行,看看行数是否减少了
  • 你应该把.where("name like '%#{search}%'")写成.where("name like ?", "'%#{search}%'")

标签: mysql sql ruby-on-rails ruby


【解决方案1】:

您应该使用fulltext index 来获得使用'%something%' 类似查询的性能提升。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 2015-08-08
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    相关资源
    最近更新 更多