Postgresql
低基數欄位:整數或字元串
工單具有以下狀態:
new in_progress on_hold closed
我可以創建
ticket.status
一個字元串 (on_hold
) 或一個唯一的 int(2
)。它被索引。Int 優點:索引中的最小尺寸
Int con:BI 和不斷發展的模式的清晰度低(
3
相比closed
)String pro:清晰的數據導航
String con:索引佔用更多空間,相同 RAM 的性能更低
我想如果它的基數低,字元串索引不會比 int 索引佔用太多空間。如果欄位具有低基數並且不是複合索引的一部分,那麼選擇整數是否過早優化?
我將 Postgres 與 SQLAlchemy、Python ORM 一起使用。
我肯定會為大桌子標準化。您可以將帶有FK 約束
integer
的or列用於查找表。int2
對於小桌子,您的任何一個想法都可以。如果有疑問,請遵守項目的指導方針。
我都不會用。反而:
一個列舉值佔用磁碟上的四個字節。
- 對於大表:使用
"char"
欄位(1 字節)作為查找表的 FK。對於非常小的查找值集是一個不錯的選擇。每個值都可以是被引用狀態的助記符:status_id | status ----------+------------ n | new i | in_progress o | on_hold c | closed
這也取決於全貌。如果無論如何都不會失去對齊填充,您實際上只會在表和索引中節省空間(並獲得性能)。更多的:
對於字元類型(“char”除外),排序規則也可能是相關的。更多的: