集合大小的性能提升:使用ActiveRecord选择(1).length与计数

时间:2014-06-13 03:05:52

标签: mysql ruby-on-rails arrays

简化问题 为什么SELECT 1 FROM table WHERE {constraints}后面跟Rails的array.length执行速度比SELECT COUNT(1) FROM table where {constraints}快,并且这是一个关注内存膨胀的问题?

方案

ActiveRecord: size vs count有些相似,我在使用ActiveRecord模型的Rails应用程序中工作,并且发现调用ar_query.select(1).length通常比ar_query.count更快,并且在许多情况下是多个500 +%更快。我假设前者在Rails中需要更多内存来处理数组而不是count,因为后者直接从数据库的COUNT(1)函数返回单个标量。除非有一些内容,否则时间差异有点违反直觉。

此代码用于高流量区域,并且每秒可以多次调用,因此性能是关键,但如果我不需要,我不希望不必要地使内存膨胀陷入困境。

0 个答案:

没有答案