2014-02-20 25 views
1

postgresql中的Bigint是8個字節的整數。它是uint64的一半範圍(因爲一位用於簽名整數)Postgres:數據類型 - 如何在postresql中存儲uint64

我需要對列進行大量聚合,並且我覺得NUMERIC類型的聚合比較慢整數類型。

在這種情況下,我應該如何優化存儲空間?

+1

你確定你的操作會溢出一個符號的64位計數器?你爲什麼認爲它不會溢出一個無符號的64位計數器? –

回答

1

除非您有具體的理由,否則請使用NUMERIC。它較慢,相當慢很多,但這可能不像你想象的那麼重要。

因爲PostgreSQL在SQL級別不支持無符號的64位整數,所以您沒有其他選擇。你可以添加一個新的數據類型作爲擴展模塊,但它會很多工作。

您可以將無符號的64位int逐位移入64位有符號整數,因此maxuint64/2以上的值爲負值。但是這對於聚合來說是完全破壞的,而且通常會非常醜陋。

相關問題