我有一个Rails 4应用程序,它执行许多不同的SQL Server查询。大多数返回少于1,000行,并且页面在浏览器中加载很快。那里没有问题。
但是,我有一个返回56,000行的怪物查询。它必须返回所有56k,没有问题。当然它可以使用分页,但这不会解决页面加载速度慢的问题。
请注意,这是我们内部使用的远程SQL服务器。
到目前为止我尝试过:
在模型中定义的方法定义中使用find_by_sql
,然后在控制器中调用它。即,
@query = Client.closed_trouble_tickets
然后在视图中迭代@query
。这适用于< 1,000行查询。当我尝试56k行的方法时,页面可能需要将近两分钟才能加载。不能接受的。
我为这56k的尝试过:
@records = []
Client.connection.select_all(Client.send(:sanitize_sql_array,
["SQL QUERY HERE FOR 56,000 ROWS"])).each do |record|
@records << { a_name: record["OneColumn"], b_name: record["TwoColumn"] ... }
end
这有点快,但仍然是可接受的页面加载时间(可能是60秒而不是90+)。当我在SQL Server Management Studio中运行56k查询时,它是即时的。
我也尝试使用这种性质的设置,但页面加载速度与上面类似:
def self.execute_statement(sql)
results = Client.connection.execute(sql)
if results.present?
return results
else
return nil
end
end
我该怎么做才能加快速度?