gpt4 book ai didi

ruby-on-rails - mongoid db 中的 pluck vs distinct。哪个更快?

转载 作者:可可西里 更新时间:2023-11-01 09:56:30 24 4
gpt4 key购买 nike

好像mongodb有两个等价的方法:

#pluck#distinct它们都只返回集合中的给定字段。

所以都是

User.pluck(:name)
User.distinct(:name)

将从数据库中的用户集合中返回所有名称的数组

> ['john', 'maria', 'tony', 'filip']

我不介意重复。哪种方法更快?

最佳答案

让我们运行一个基准测试!

require 'benchmark'


1_200.times { FactoryGirl.create(:user) }

Benchmark.bmbm(7) do |bm|
bm.report('pluck') do
User.pluck(:email)
end

bm.report('pluck.uniq') do
User.pluck(:email).uniq
end

bm.report('only.pluck') do
User.only(:email).pluck(:email)
end

bm.report('only.pluck.uniq') do
User.only(:email).pluck(:email).uniq
end

bm.report('distinct') do
User.distinct(:email)
end

bm.report('only.distnct') do
User.only(:email).distinct(:email)
end
end

哪些输出:

Rehearsal ------------------------------------------------
pluck 0.010000 0.000000 0.010000 ( 0.009913)
pluck.uniq 0.010000 0.000000 0.010000 ( 0.012156)
only.pluck 0.000000 0.000000 0.000000 ( 0.008731)
distinct 0.000000 0.000000 0.000000 ( 0.004830)
only.distnct 0.000000 0.000000 0.000000 ( 0.005048)
--------------------------------------- total: 0.020000sec

user system total real

pluck 0.000000 0.000000 0.000000 ( 0.007904)
pluck.uniq 0.000000 0.000000 0.000000 ( 0.008440)
only.pluck 0.000000 0.000000 0.000000 ( 0.008243)
distinct 0.000000 0.000000 0.000000 ( 0.004604)
only.distnct 0.000000 0.000000 0.000000 ( 0.004510)

它清楚地表明使用 #distinct 几乎比 #pluck 快两倍

关于ruby-on-rails - mongoid db 中的 pluck vs distinct。哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37333137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com