我记得很久以前在学术界有人告诉我,Oracle 会在给定 (9) 的 varchar 时分配空间来实际存储 16 个字节的字符,即使它只需要 9 个字符。(预宽字符)
这仍然是一件事吗(这曾经是一件事吗)?如果我分配 nvarchar(63) 是否会最大化存储空间(假设为空字符)?它仍会占用与 nvarchar(50) 相同的空间吗?编制索引有什么好处吗?
我主要关注 MSSQL,但有兴趣了解任何数据库。
最佳答案
它不会为nvarchar预先分配空间
空间是字符数 * 2 字节 + 2 字节大小
如果你存储了 40 个字符,那么 nvarchar(63) 和 nvarchar(50) 的大小都是 82 字节
区别在于你不能在 nvarchar(50) 中放入 51 个字符
关于sql-server - nvarchar和varchar的空间分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29173996/