我的问题是关于如何在限制查询次数的同时对数据库执行不同级别的搜索。在没有第二个查询的情况下搜索关系
让我们从简单的开始:
@companies = Company.where("active = ?", true)
比方说,我们从这组显示的记录。然后,我们需要:
@clientcompanies = @companies.where("client_id = ?", @client.id)
我们会显示@clientcompanies的内容。然后,我们想进一步深入。
@searchcompanies = @clientcompanies.where("name LIKE ? OR notes LIKE ?", "#{params[:search]}%", "#{params[:search]}%")
这三个陈述是最有效的方法去做这件事吗?
如果实际上数据库每次都是从整个公司表格开始的,是否有限制范围的方法,以便每个上述语句随着集合大小的减少需要更短的时间?
万一它很重要,我在MySQL和PostgreSQL上运行Rails 3。
我的用例显示来自这些不同级别的查询的数据很简单 - 想象一个通过一些数据'钻取'的页面,并向用户显示关于每个级别的详细信息。比方说,我想向用户展示一些样本'公司',然后是一些样本'客户公司',以及用户的实际搜索。我的问题取决于这种情况,我需要做这些查询,但我想尽可能轻松地做到这一点。 – sscirrus 2011-06-16 06:23:35