限制搜索查询以更快地运行

时间:2013-05-24 13:44:10

标签: ruby-on-rails ruby-on-rails-3.2

是的是的!我知道!像下面的命令一样在rails中传递SQL是完全错误的,但我保证!:)它仅用于某些基准目的

  @medications = TestPharmOrderMain.select("brand_name,form,dose,generic_name as alternative,sum (order_count)
  as total_count
  ,sum(order_cost) as total_cost").group("brand_name,form,dose,generic_name").limit(5)

我在其上运行此REST服务的PostgresQL有两百万行,从这个查询返回JSON需要四分钟,这是不可能针对它开发的。

有没有办法可以更改此查询,例如只查看数据库中的前20行而不是200万行,以便我的开发目的更快地运行?

1 个答案:

答案 0 :(得分:2)

如果这是出于开发目的,请做聪明的事情并创建一个代表整个系统的小型数据库。您可以使用create table作为select语句执行此操作:

Create table my_test_table  
as    
select brand_name,form,dose,generic_name as alternative,sum (order_count)
  as total_count
  ,sum(order_cost) as total_cost  
from table  
  group by brand_name,form,dose,generic_name
  limit 5

现在,您可以将测试查询指向my_test_table,它只会有5条记录,因此速度非常快。

现在你也可以将它偏移到像DBUnit这样的东西,它本质上是一个放在XUnit之上的框架。因此,这可以很容易地集成到您认为是RubyUnit的测试中。