【发布时间】: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