gpt4 book ai didi

ruby-on-rails - 映射,收集,选择和采摘之间哪个更快?

转载 作者:行者123 更新时间:2023-12-03 15:45:58 25 4
gpt4 key购买 nike

我一直在使用不同的方法从事件记录中获取特定字段,但是哪种方法更快,更易使用,它们又有何不同?

User.all.collect(&:name)
User.all.pluck(:name)
User.all.select(:name)
User.all.map(&:name)

感谢您的帮助。

最佳答案

使用这些方法中的任何一种都需要不同的用例:
selectpluck都使指定列的SQL's SELECT(SELECT "users"."name" FROM "users")。因此,如果您尚未提取users并且不打算这样做,那么这些方法将比map/collect更具性能。
selectpluck之间的区别:

  • 性能:在合理数量的记录上使用时,可以忽略不计
  • 用法:select返回指定列的模型列表,pluck返回指定列的值列表。因此,再次取决于使用情况。
  • collect/map方法实际上是别名,因此它们之间没有区别。但是要遍历模型,他们会获取整个模型(而不是特定的列),他们发出 SELECT "users".* FROM "users"请求,将关系转换为数组并映射到数组。

    当已经获取了关系时,这可能会很有用。如果是这样,它将不会发出其他请求,与使用 pluckselect相比,最终可能会获得更高的性能。但是,同样,必须针对特定用例进行度量。

    关于ruby-on-rails - 映射,收集,选择和采摘之间哪个更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45347317/

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