-2

我希望对我的 SQL 查询做一些优化。如果不对其进行性能测试,什么查询最耗时?我几乎可以肯定他们会返回相同的结果。

  • !MyClass.find(:first, :conditions => c).nil?
  • MyClass.count(:conditions => c) > 0
  • MyClass.count(:conditions => c, :limit => 1) > 0

问候

4

2 回答 2

0

我问这个问题是因为我认为答案是证据。看来不是。

所以我为几个查询做了一些平均时间。这是按时间排序的结果:

.count(:conditions => c, :limit => 1) > 0;
=> 0.042037

.count(:conditions => c) > 0
=> 0.037781

.count(:select => '1', :conditions => c) > 0
=> 0.035976

.count(:select => '1', :conditions => c, :limit => 1) > 0
=> 0.034157

.find(:first, :conditions => c).nil?
=> 0.000377

.find(:first, :select => '1', :conditions => c).nil?
( equivalent to .exists?(c) )
=> 0.000184

最后一个是最有效的。感谢您的提示:select => '1'

于 2013-05-03T09:42:21.407 回答
0

你可以自己测试一下。用少于 15 行代码编写性能测试。了解更多信息:

http://guides.rubyonrails.org/performance_testing.html

于 2013-05-03T09:03:17.583 回答