Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails中,加载是否应用于查询的where条件?除了使用页面缓存外,如何提高应用程序的性能?_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.1_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 在Rails中,加载是否应用于查询的where条件?除了使用页面缓存外,如何提高应用程序的性能?

Ruby on rails 在Rails中,加载是否应用于查询的where条件?除了使用页面缓存外,如何提高应用程序的性能?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,Ruby On Rails 3.2,我有三个问题: (一) 文件或文件夹和数据集都有许多元实例s。给出以下查询: p= Metainstance.find(:first, :conditions=>["file_or_folder_id=? AND dataset_id=?", some.id, dataset_id],:include=>[:file_or_folder,:dataset]) 急切加载是否适用于文件或文件夹和数据集?另外,编写此查询的最佳方式是什么 2) 如果我需要检索大量数据,那么使用连接或包含选

我有三个问题:

(一)
文件或文件夹
数据集
都有许多
元实例
s。给出以下查询:

p= Metainstance.find(:first, :conditions=>["file_or_folder_id=? AND dataset_id=?", some.id, dataset_id],:include=>[:file_or_folder,:dataset])
急切加载是否适用于
文件或文件夹
数据集
?另外,编写此查询的最佳方式是什么

2) 如果我需要检索大量数据,那么使用
连接
包含
选项或使用范围编写查询是否更有效

3) 我不能使用页面缓存,因为我有不断变化的动态内容。我还可以如何提高Rails应用程序的性能

1)首先,
find(:First)
早就被弃用了。实际上,它终于在Rails 4中消失了。以下是这个问题在现代的表现(无耻地抄袭了meagar的评论):

因此,关于这个问题:以这种方式快速加载意味着将发生以下情况:

  • 首先,Rails将加载与条件匹配的元实例 查询
  • 其次,它将加载所有关联的FileOrFolders 使用在第一个查询中获取的元实例(而不是任何其他查询)
  • 最后,它将加载与这些数据集关联的所有数据集 元实例
我认为这意味着您的问题的答案是“是的,热切加载应用了
where
子句的内容。”

2) 我想我们已经在上面讨论了finder方法。我不认为他们实际上效率较低。只是更加丑陋和不受欢迎。上面的代码是运行这样的查询的正确方法

3) 关于提高Rails应用程序性能的书有很多。在任何人都能给你有意义的建议之前,你必须更具体地说明你正在运行的查询以及如何使用查询结果。

1)首先,
find(:First)
早就被弃用了。实际上,它终于在Rails 4中消失了。以下是这个问题在现代的表现(无耻地抄袭了meagar的评论):

因此,关于这个问题:以这种方式快速加载意味着将发生以下情况:

  • 首先,Rails将加载与条件匹配的元实例 查询
  • 其次,它将加载所有关联的FileOrFolders 使用在第一个查询中获取的元实例(而不是任何其他查询)
  • 最后,它将加载与这些数据集关联的所有数据集 元实例
我认为这意味着您的问题的答案是“是的,热切加载应用了
where
子句的内容。”

2) 我想我们已经在上面讨论了finder方法。我不认为他们实际上效率较低。只是更加丑陋和不受欢迎。上面的代码是运行这样的查询的正确方法

3) 关于提高Rails应用程序性能的书有很多。在任何人都能给您提供有意义的建议之前,您必须更具体地说明正在运行的查询以及如何使用查询结果。

a)是的,它确实执行了快速加载。我想这样做

p= Metainstance.where(:file_or_folder_id => some.id, :dataset_id => dataset_id).includes([:file_or_folder, :dataset]).first
这也可以进行快速加载

b) 如果您稍后使用文件\或\文件夹和数据集,那么最好使用includes(并且您可以避免n+1问题)。如果您不使用它们,只需要连接表,那么连接是更快的方法

c) 有许多方法可以提高应用程序的性能,您可以在中找到其中的一些方法。

a)是的,它确实执行快速加载。我想这样做

p= Metainstance.where(:file_or_folder_id => some.id, :dataset_id => dataset_id).includes([:file_or_folder, :dataset]).first
这也可以进行快速加载

b) 如果您稍后使用文件\或\文件夹和数据集,那么最好使用includes(并且您可以避免n+1问题)。如果您不使用它们,只需要连接表,那么连接是更快的方法


c) 有许多方法可以提高应用程序的性能,您可以在中找到其中一些方法。

请在每篇文章中提出一个问题。您使用的是一种古老的语法。抛出
。查找
并使用
元实例。其中(文件或文件夹\u id:some.id,数据集\u id:dataset\u id)。包括(:文件或文件夹,:数据集)。首先
有多大?你能使用渐进加载吗?大约50000条记录。它们与其他表有关联。但这个数字不是固定的,将来会增加。@meager。。。。does“Metainstance.where(file_或_folder_id:some.id,dataset_id:dataset_id)。包括(:file_或_folder,:dataset)。首先“急切加载此查询中的file_或_folder,dataset…是否会提高数据检索的性能?请在每篇文章中问一个问题。您使用的是一种古老的语法。抛出
。查找
并使用
元实例。其中(文件或文件夹\u id:some.id,数据集\u id:dataset\u id)。包括(:文件或文件夹,:数据集)。首先
有多大?你能使用渐进加载吗?大约50000条记录。它们与其他表有关联。但这个数字不是固定的,将来会增加。@meager。。。。does“Metainstance.where(file_或_folder_id:some.id,dataset_id:dataset_id)。包括(:file_或_folder,:dataset)。首先“急切加载此查询中的file_或_folder,dataset…它会提高数据检索的性能吗?inode=FileOrFolder.find_by_id(params[:id])dataset=dataset.find_by_id(params[:datasetid])根据提供的建议,我将查询更改为:meta=MetricInstance.where(dataset\u id:dataset.id,file\u或\u folder\u id:inode.id)。包括(:file\u或\u folder,:dataset,:qeinbat,:num\u of_test,:bp,:clearall,:closeall,:clearclass,:clearmax,:pause,:pause,:test\u time,:user)。首先,我不是在以后使用文件\或\文件夹和数据集,而是使用我在包含列表中提供的其他数据集。。。。。你认为我的查询是正确的吗?如果你不使用文件或文件夹和数据集,你可以