您好我已經得到了當前存儲在PostgreSQL數據庫的模擬快照作爲錶快照表的模式是高效運行在多個輸入的SQL查詢
simdb=> \d isonew_4.snapshot_102
Table "isonew_4.snapshot_102"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
x | real |
y | real |
z | real |
vx | real |
vy | real |
vz | real |
pot | real |
mass | real |
Indexes:
"snapshot_102_id_idx" btree (id) WITH (fillfactor=100)
我有一個查詢計算封閉精細單一半徑的質量:
SELECT SUM(mass) AS mass
FROM isonew_4.snapshot_102 AS s
WHERE SQRT(s.x^2 + s.y^2 + s.z^2) < {radius}
但是我想在不同半徑的數數運行此。
由於該表擁有大約1億行,因此我寧願將其作爲SQL查詢來執行,而不是抓取所有的粒子,並在Python中使用類似numpy.histogram
的內容在本地對我的計算機執行binning操作。
感謝您的輸入,但這看起來比較慢(似乎在O(n)時間內運行的半徑數量是兩倍)。我看看使用[this](https://wiki.postgresql.org/wiki/Aggregate_Histogram)作爲基礎。如果有任何問題,我會更新這個問題。 –
這是可能的。我爲執行速度添加了其他選項。 –