很多数据库模式似乎都遵循以下标准:
(2^n)-1 对于大字段:
varchar(511)
varchar(255)
varchar(127)
...然后 (2^n) 对于较小的
varchar(64)
varchar(32)
varchar(16)
varchar(8)
我明白为什么使用 (2^n)-1 的数字,我不明白的是为什么没有必要将趋势继续向下到小字段。
例如
varchar(63)
varchar(31)
varchar(15)
varchar(7)
这是有原因的还是仅仅是返回减少太多?
最佳答案
我记得过去,使用 2^n 长度更适合磁盘或内存上的 block 对齐。 对齐 block 更快。 今天“ block ”的大小更大,内存和磁盘的速度足以忽略对齐, 除了非常大的 block 。 (无论“非常大”在今天意味着什么......)
如今,这样做只是一种传统。
我成为这句名言的另一个原因是: 只有 10 种人:会二进制的和其他。
而 2^n -1 是梅森素数的候选者。所以它也很怪异......
关于database - 为什么 SQL 字段长度总是 (2^n)-1 除非小于 127?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1571212/