CharField max_length 2 ^ n vs 2 ^ n-1

jin*_*ski 7 python database django

为什么使用max_length的CharField等于2 ^ n而其他人使用2 ^ n-1?

例如:

尽管它不是科学测量,但2048似乎比2047更受欢迎,但255比256更受欢迎.Django文档说,如果你使用unique = True,MySQL max_length限制为255个字符.但是为什么我会在其他情况下使用2 ^ n-1而不是2 ^ n?

kdt*_*kdt 7

你大多得到它.它不仅仅是255的unique = True参数,而且有时可以更有效地存储长达255的字符串.

所以答案是,对于255和256这样做可能有一点,但对于其他长度,它很可能毫无意义.从一开始就选择两个功率的长度通常不是出于科学原因(我们大多数人实际上没有对我们的512长场进行基准测试,使得我们的应用程序运行速度明显快于513长场).

也就是说,可能存在特定于应用程序的情况,其中Django应用程序是C应用程序的前端,其中具有N ^ 2-1个字符串对于有效存储附加的终止\0字节是有用的.