执行单个数据库查询以找到页面所需的所有结果,然后使用 if/else 语句对其进行多次循环以提取要在每个部分中显示的内容,或者执行多个数据库是否更快?查询选择您需要的确切数据,然后分别遍历每个数据?
例如:
@completed = HostTask.find(:all, :include => [:task], :conditions =>["host_tasks.decommission_id = ? AND host_tasks.completed IS NOT NULL", params[:id]], :order => "tasks.position")
@incomplete = HostTask.find(:all, :include => [:task], :conditions =>["host_tasks.decommission_id = ? AND host_tasks.completed IS NULL", params[:id]], :order => "tasks.position")
然后循环显示每个。或者只是:
@tasks = HostTask.find(:all, :include => [:task], :conditions =>["host_tasks.decommission_id = ?", params[:id]], :order => "tasks.position")
循环遍历@tasks 两次并仅在@tasks.completed 为空时才显示然后不为空?
最佳答案
多次往返成本高昂,但选择超过所需数据的成本也很高。在大多数情况下,仅选择具有多个数据库查询的确切数据而不尝试使用复杂的异常业务逻辑是首选方式,但这取决于用例。我推荐缓存,缓存,缓存。您可以获得巨大的性能优势。
关于mysql - 优化数据库查询的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3919125/