【问题标题】:Ruby on Rails: Replacing the "LIKE" part of the SQL query with Ruby codeRuby on Rails:用 Ruby 代码替换 SQL 查询的“LIKE”部分
【发布时间】:2013-02-02 13:51:17
【问题描述】:

在我的应用程序中,我有一个“LIKE”SQL 查询,类似于...

Item.where("name LIKE ?", "%"+params[:q]+"%").all

但我只想打 db 1x(在应用程序启动时),因为项目的数量很大,并加载这个通用部分......

Item.all

...进入内存(一个全局变量),这样我以后可以在整个应用程序中,在不同的情况下重用它的内容,并使用一些特定于案例的 Ruby 代码进行优化(参见“LIKE”部分)。

用 Ruby 进行这种“过滤”的最快方法是什么?

【问题讨论】:

  • 您是否过早优化?你的应用真的太慢了​​吗?我想在 Ruby 中应用过滤器的最快(也是最简单)的方法是让数据库处理它..!数据库是为完成此类工作而构建的,而 Ruby 不是。
  • “项目数量巨大”。定义“巨大”。
  • @Veger - 我相信你是对的,我可能太努力避免撞到数据库......
  • @ypercube - 虽然每个条目都包含大量数据,但“巨大”实际上是 5k 个条目。所以,是的,我过早地优化并低估了数据库的力量。谢谢大家!

标签: mysql ruby ruby-on-rails-3


【解决方案1】:

你能用Low level caching这个吗?

【讨论】:

  • 确实,低级缓存可能比使用全局变量更好(对于我问题的缓存部分)。但我的具体情况是一个自动完成下拉菜单,它当然会非常快速地生成大量不同的查询(即每次用户向查询词添加另一个字符时)。由于可能有大量不同的 LIKE 查询,因此低级缓存无法合理地解决我的问题的“LIKE”部分......
猜你喜欢
  • 2012-06-10
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
相关资源
最近更新 更多