Mysql 如何使用条件计算表的大小
如何使用限制计算MySQL或PosgreSQL中的表大小?例如:Mysql 如何使用条件计算表的大小,mysql,ruby-on-rails,postgresql,Mysql,Ruby On Rails,Postgresql,如何使用限制计算MySQL或PosgreSQL中的表大小?例如:其中Organization_id=1如果您的模型中设置了如下关联: class Organisation < ActiveRecord::Base has_many :members end class Member < ActiveRecord::Base belongs_to :organisation end 多亏了ActiveRecord,这种功能与数据库无关。如果您在模型中设置了如下关联: cla
其中Organization_id=1
如果您的模型中设置了如下关联:
class Organisation < ActiveRecord::Base
has_many :members
end
class Member < ActiveRecord::Base
belongs_to :organisation
end
多亏了ActiveRecord,这种功能与数据库无关。如果您在模型中设置了如下关联:
class Organisation < ActiveRecord::Base
has_many :members
end
class Member < ActiveRecord::Base
belongs_to :organisation
end
多亏了ActiveRecord,这种东西是独立于数据库的。在PostgreSQL中你不能。数据存储在块中(通常每个块8kb),您不知道“Organization_id=1”的记录存储在哪个块中。当所有记录都在一个块中时,它是8kb。当100条记录存储在100个块中时,它是800kb,但也包括其他记录
你可以用隐藏的列“ctid”来做一些魔术,但是这需要做很多工作,不准确,也不是很有用。只需使用pg_relation_size()获取整个表,这就是您所需要的。如果您需要TOAST表包含,请使用pg_total_relation_size()。在PostgreSQL中,您不能使用。数据存储在块中(通常每个块8kb),您不知道“Organization_id=1”的记录存储在哪个块中。当所有记录都在一个块中时,它是8kb。当100条记录存储在100个块中时,它是800kb,但也包括其他记录 你可以用隐藏的列“ctid”来做一些魔术,但是这需要做很多工作,不准确,也不是很有用。只需使用pg_relation_size()获取整个表,这就是您所需要的。如果您需要TOAST表包含,请使用pg_total_relation_size()。甚至更短的版本
ModelName.count(:organisation_id => 1)
更简短的版本
ModelName.count(:organisation_id => 1)
这取决于你的桌子结构。如果你有所有固定宽度的字段,你可以非常接近。如果您有可变宽度字段,那么最好是进行估计。这是为博士后准备的
SELECT pg_total_relation_size('my_table') * i / cnt
FROM (
SELECT SUM(CASE WHEN organization_id = 1 THEN 1 ELSE 0 END) AS i,
COUNT(1) AS cnt
FROM my_table
) sub
这取决于你的桌子结构。如果你有所有固定宽度的字段,你可以非常接近。如果您有可变宽度字段,那么最好是进行估计。这是为博士后准备的
SELECT pg_total_relation_size('my_table') * i / cnt
FROM (
SELECT SUM(CASE WHEN organization_id = 1 THEN 1 ELSE 0 END) AS i,
COUNT(1) AS cnt
FROM my_table
) sub
计数方法将非常有用faster@fl00r:这是计数法。加载
organization
后,它会执行与我的示例相同的操作。klew,你说得对。我把长度和尺寸的方法弄混了。这种方法会更有效faster@fl00r:这是计数法。加载organization
后,它会执行与我的示例相同的操作。klew,你说得对。我混合了长度和大小方法。我认为这可能是一个简单的解决方案,然后我可以乘以每列所需的字节数。嗯,我怀疑我的答案是错误的。它没有给出表的大小,但是它计算表中的行数。但是conditional_table_size=rows*row_size
@Randolpho:但是文本和blob字段会有问题吗?我认为这可能是一个简单的解决方案,然后我可以乘以每个列所需的字节数,我怀疑我的答案是错误的。它没有给出表的大小,但是它计算表中的行数。但是conditional_table_size=rows*row_size
@Randolpho:但是文本和blob字段会有问题吗?