Postgresql
PostgreSQL 動態數組比純文字更浪費嗎?
今天有人幫我在PostgreSQL裡做一個函式。我希望該函式以每兩列 100 多個幾何圖形的數組而不是分隔文本的形式返回,以便更容易理解返回的內容。他的回答是,如果它是數組而不是文本,它將使用更多資源,我應該專注於我的程式而不是浪費資源。
我對 PostgreSQL 的了解還不夠,不知道在這種情況下使用數組是否會引起關注。
我的問題是:PostgreSQL 動態數組是否比文本佔用更多的記憶體?如果是這樣,在大型查詢中放棄使用數組是否是一個重大問題?
他的回答是,如果它是數組而不是文本,它將使用更多資源,我應該專注於我的程式而不是浪費資源。
證據?
如果他的表現與其他方面的清晰度和正確性改進相提並論,那麼他有責任提供證據。
分隔文本通常是錯誤的做法 - 參見例如這個相關問題。
我對 PostgreSQL 的了解還不夠,不知道在這種情況下使用數組是否會引起關注。
這取決於您如何建構數組。
array_agg
嘗試使用建構子或ARRAY[]
類似方法在一次執行中創建它們。在循環中通過連接迭代建構它們往往非常慢,因為在 SQL 級別數組是不可變的,因此必須複製它們以附加到它們。當然,
text
在 SQL 級別也是如此,同樣的原則也適用。我的問題是:PostgreSQL 動態數組是否比文本佔用更多的記憶體?
這取決於基礎類型。通常,如果 t1 使用的記憶體比 t2 多,則 t1 的數組比 t2 的數組使用更多的記憶體。
數組的內部儲存在一定程度上取決於它們的創建方式,但通常它們在基本類型上增加很少或沒有記憶體成本。
如果是這樣,在大型查詢中放棄使用數組是否是一個重大問題?
是的,但沒有比使用分隔文本更令人擔憂的問題。
嘗試返回結果集,而不是巨大的單個結果。