如何使用限制來計算MySQL或PosgreSQL中的表大小? 例如:WHERE organisation_id=1
如何使用條件計算表的大小
0
A
回答
1
如果你在你的模型建立的社團如下:
class Organisation < ActiveRecord::Base
has_many :members
end
class Member < ActiveRecord::Base
belongs_to :organisation
end
然後你可以找到有多少個成員在組織1下列要求:
organisation = Organisation.find(1)
n_members = organisation.members.size
感謝ActiveRecord,這種事情是獨立於數據庫的。
2
在PostgreSQL中你不行。數據存儲在塊中(每個塊通常爲8kb),您不知道存儲了「organisation_id = 1」記錄的塊。當所有記錄都在一個塊中時,它是8kb。當100個記錄存儲在100個塊中時,它是800kb,但也包括其他記錄。
你可以用隱藏的列「ctid」做一些魔術,但這是很多工作,不準確,也不是很有用。只需使用pg_relation_size()來獲取整個表,這就是你需要的。如果您需要TOAST表,請使用pg_total_relation_size()。
2
0
甚至更短的版本
ModelName.count(:organisation_id => 1)
1
這取決於你的表結構。如果你有所有固定寬度的字段,你可以非常接近。如果你有寬度可變的字段,你會做的最好的就是估計。這是爲postgres。
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
相關問題
- 1. 如何計算此表單的大小?
- 2. 如何計算DB2中表的大小
- 3. `find'如何計算文件的大小?
- 4. 如何使用條件大小計算minitab數據中的摘要和boxplot?
- 5. 如何計算滾動條大拇指的大小?
- 6. 如何計算音頻文件大小?
- 7. 如何計算protobuf文件大小?
- 8. 如何計算可用內存上的最大列表大小?
- 9. InfiniDB表大小計算
- 10. 計算文件列表的大小,而不使用find/-exec
- 11. 如何計算應用小部件位圖大小?
- 12. 計算滾動條thumtrack大小
- 13. 如何正確計算滾動條的大小(高度)?
- 14. 使用Python計算目錄的大小?
- 15. 使用條件計算值
- 16. 如何計算組件非常大的2向量的大小?
- 17. mysql用條件計算OT小時
- 18. 如何計算精靈的大小?
- 19. 如何計算NSString的大小?
- 20. 如何計算查詢bigquery的大小?
- 21. 如何計算GIF圖像的大小?
- 22. MongoDB如何計算文檔的大小?
- 23. 如何計算記錄的大小
- 24. 如何計算UITextView的邊距大小?
- 25. Qt如何計算它的大小?
- 26. 如何計算適當的Android小部件大小?
- 27. 如何計算上傳大文件的最佳塊大小
- 28. 計算頁表的大小和倒頁表大小
- 29. 如何在C中計算您的計算機的字大小?
- 30. 使用LineBreakMeasurer計算線條並更改字體大小
計數方法會快很多 – fl00r 2010-03-30 20:31:00
@ fl00r:這是計數方法。加載'organisation'後,它和我的例子一樣。 – klew 2010-03-30 21:50:39
klew,你說得對。我已經混淆了_length_和_size_方法 – fl00r 2010-03-30 22:41:27