odi*_*ont 30 django django-models
我很奇怪为什么提供它.该字段依赖于数据库,是否使其完全不可靠?
我想将出生年份存储在模型中,有点像
class Person(models.Model):
name = models.CharField(max_length=256)
born = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
当然这需要很小的空间,它应该总是4"字符"长,所以一个PositiveSmallIntegerField可能适合,但为什么我应该选择它而不是正常的IntegerField?
Tod*_*ner 33
许多RDBM的性能可能在很大程度上取决于行的大小.虽然"纯粹主义"方法可能会说应用程序应该完全独立于底层数据结构,但是在许多行上的改进(如使用较小的整数)可以减少表大小的千兆字节,这使得更多的表适合内存,这大大改善了性能.它是ABCs的B rief部分.
我会使用一个像这样的小整数,例如,一个表上的主键总是有<100行,特别是当它作为外键存储在表中时我希望变得非常大.虽然大小是实现定义的,但可以安全地假设它至少大于127.
这是其中之一就是它的方式,因为它有这样的方式.
Django支持SmallIntegerField,因为Django在PostgreSQL上长大,而PostgreSQL支持smallint.PosgreSQL文档说
smallint类型通常仅在磁盘空间非常宝贵时使用.
虽然现在看起来有点古怪,但是当角落商店可以使用1TB磁盘时,不久之前磁盘数量要小很多,每个字节的成本要高得多.记忆也是.在索引中使用smallint(适当时)意味着将更多行索引装入RAM缓存,这意味着更好的性能.