Sql 使用大小还是依靠收集更好?

Sql 使用大小还是依靠收集更好?,sql,ruby-on-rails,ruby-on-rails-3,postgresql-9.1,Sql,Ruby On Rails,Ruby On Rails 3,Postgresql 9.1,当计算一个集合时。通过大小还是计数来做比较好 Size=Ruby(@foobars.Size) Count=SQL(@foobars.Count) 我还注意到,count再次访问数据库。这取决于具体情况。在您展示的示例中,我将使用size,因为您已经加载了集合,调用size只会检查数组的长度。正如您所注意到的,count将执行额外的数据库查询,您确实希望避免这种情况 但是,如果您只想显示foobar的数量,而不想显示这些对象,那么我将使用count,因为它不会将实例加载到内存中,只返回记录的数量

当计算一个集合时。通过大小还是计数来做比较好

Size=Ruby(
@foobars.Size

Count=SQL(
@foobars.Count


我还注意到,
count
再次访问数据库。

这取决于具体情况。在您展示的示例中,我将使用
size
,因为您已经加载了集合,调用
size
只会检查数组的长度。正如您所注意到的,
count
将执行额外的数据库查询,您确实希望避免这种情况


但是,如果您只想显示foobar的数量,而不想显示这些对象,那么我将使用
count
,因为它不会将实例加载到内存中,只返回记录的数量。

这取决于具体情况。在您展示的示例中,我将使用
size
,因为您已经加载了集合,调用
size
只会检查数组的长度。正如您所注意到的,
count
将执行额外的数据库查询,您确实希望避免这种情况


但是,如果您只想显示foobar的数量,而不想显示这些对象,那么我将使用
count
,因为它不会将实例加载到内存中,只返回记录的数量。

我倾向于建议对所有内容使用
size
,因为这样更安全。人们用
尺寸
犯的愚蠢错误更少

以下是它们的工作原理:

length
:length将返回一个数组中的元素数,或者返回加载的集合数-关键点是,不管如何,都将在此处加载集合。因此,如果您使用的是activerecord关联,它会将元素从DB拉入内存,然后返回数字

count
:count发出一个数据库查询,因此,如果您已经有了一个数组,那么对数据库的调用就没有意义了

size
:两全其美-size检查您正在使用的类型,然后使用更合适的类型(因此,如果您有数组,它将使用长度;如果您有未检索的
ActiveRecord::Association
它将使用计数,依此类推)

资料来源:

我倾向于建议所有东西都使用
尺寸,因为这样更安全。人们用
尺寸
犯的愚蠢错误更少

以下是它们的工作原理:

length
:length将返回一个数组中的元素数,或者返回加载的集合数-关键点是,不管如何,都将在此处加载集合。因此,如果您使用的是activerecord关联,它会将元素从DB拉入内存,然后返回数字

count
:count发出一个数据库查询,因此,如果您已经有了一个数组,那么对数据库的调用就没有意义了

size
:两全其美-size检查您正在使用的类型,然后使用更合适的类型(因此,如果您有数组,它将使用长度;如果您有未检索的
ActiveRecord::Association
它将使用计数,依此类推)

资料来源:

如果这是唯一需要的信息,我就使用
count
,但是如果我要迭代整个集合,我就使用
length
(大小是长度的别名),如果这是唯一需要的信息,我就避免使用额外的db calli
count
,但是如果我要迭代整个集合,我就使用
length
(大小是长度的别名)并避免额外的db调用