我希望对我的 SQL 查询做一些优化。如果不对其进行性能测试,什么查询最耗时?我几乎可以肯定他们会返回相同的结果。
!MyClass.find(:first, :conditions => c).nil?
MyClass.count(:conditions => c) > 0
MyClass.count(:conditions => c, :limit => 1) > 0
问候
我希望对我的 SQL 查询做一些优化。如果不对其进行性能测试,什么查询最耗时?我几乎可以肯定他们会返回相同的结果。
!MyClass.find(:first, :conditions => c).nil?
MyClass.count(:conditions => c) > 0
MyClass.count(:conditions => c, :limit => 1) > 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'
!
你可以自己测试一下。用少于 15 行代码编写性能测试。了解更多信息: