jin*_*ski 7 python database django
为什么使用max_length的CharField等于2 ^ n而其他人使用2 ^ n-1?
例如:
在django.contrib.gis.db.backends.postgis.models(django 1.3)中:
class SpatialRefSys(models.Model, SpatialRefSysMixin):
srtext = models.CharField(max_length=2048)
Run Code Online (Sandbox Code Playgroud)在django_openid_auth.models中(djano-openid-auth 0.3):
class Nonce(models.Model):
server_url = models.CharField(max_length=2047)
Run Code Online (Sandbox Code Playgroud)尽管它不是科学测量,但2048似乎比2047更受欢迎,但255比256更受欢迎.Django文档说,如果你使用unique = True,MySQL max_length限制为255个字符.但是为什么我会在其他情况下使用2 ^ n-1而不是2 ^ n?
你大多得到它.它不仅仅是255的unique = True参数,而且有时可以更有效地存储长达255的字符串.
所以答案是,对于255和256这样做可能有一点,但对于其他长度,它很可能毫无意义.从一开始就选择两个功率的长度通常不是出于科学原因(我们大多数人实际上没有对我们的512长场进行基准测试,使得我们的应用程序运行速度明显快于513长场).
也就是说,可能存在特定于应用程序的情况,其中Django应用程序是C应用程序的前端,其中具有N ^ 2-1个字符串对于有效存储附加的终止\0
字节是有用的.