Jes*_*ose 3 postgresql index database-design datatypes
工单具有以下状态:
new
in_progress
on_hold
closed
Run Code Online (Sandbox Code Playgroud)
我可以创建ticket.status一个字符串 ( on_hold) 或一个唯一的 int( 2)。它被索引。
整数优点:索引中的最小尺寸
Int con:BI 和不断发展的模式的清晰度低(3与 相比closed)
String pro:清晰的数据导航
String con:占用更多空间来索引,对于相同的 RAM 性能较低
我想如果字符串索引的基数较低,它不会比 int 索引占用太多空间。如果该字段的基数较低并且不是复合索引的一部分,则选择整数是否过早优化?
我将 Postgres 与 SQLAlchemy、Python ORM 一起使用。
我肯定会为大桌子标准化。您可以将带有FK 约束的integerorint2列用于查找表。
对于小桌子,您的任何一个想法都可以。如果有疑问,请坚持项目的指导方针。
我会用没有。反而:
一个枚举值在磁盘上占据四个字节。
对于大表:使用"char"字段(1 字节)作为查找表的 FK。对于非常小的查找值集是一个不错的选择。每个值都可以是引用状态的助记符:
status_id | status
----------+------------
n | new
i | in_progress
o | on_hold
c | closed
Run Code Online (Sandbox Code Playgroud)这也取决于完整的图片。如果无论如何都没有丢失对齐填充,您实际上只会在表和索引中节省空间(并获得性能)。更多的:
对于字符类型(“char”除外),排序规则也可能相关。更多的:
| 归档时间: |
|
| 查看次数: |
1304 次 |
| 最近记录: |