2016-02-12 73 views
4

我想在表中存儲15位數字。PostgreSql將值存儲爲整數與varchar

在查找速度方面,我應該使用bigintvarchar

此外,如果它填充了數百萬條記錄,那麼不同的數據類型會對存儲產生影響嗎?

+1

**從不**,將數字存儲在'varchar'列中。 **從來沒有** –

+0

以下問題給出了一個答案:http://stackoverflow.com/questions/2346920/sql-select-speed-int-vs-varchar 正如已經說過的整數更快。 –

回答

6

在空間方面,一個bigint需要8個字節,而一個15個字符的字符串最多需要19個字節(一個4個字節報頭和最多可爲數據的另一15個字節),這取決於它的值。另外,一般來說,數字操作的平等檢查應該稍微快一點。除此之外,它在很大程度上取決於您打算如何處理這些數據。如果您打算使用數字/數學運算或根據範圍進行查詢,則應使用bigint

2

您可以將它們存儲爲BIGINT,因爲使用INT的比較與varchar相比更快。如果您希望數百萬條記錄能更快地檢索數據,我還建議您在該列上創建一個索引。

您還可以檢查此forum

索引是最快的整數類型。字符類型可能被作爲整數存儲在下面的 (猜測)。VARCHAR是變量分配 ,當您更改字符串長度時,它可能不得不重新分配。

通常整數是最快的,然後單個字符,然後CHAR [x] 類型,然後VARCHARS。

+0

「CHAR」與「VARCHAR」的註釋不適用於Postgres;在內部,它們是相同的,只不過'CHAR'值用空格填充,這意味着'VARCHAR'實際上通常更快。 –

相關問題