sql-server - nvarchar和varchar的空间分配

标签 sql-server tsql

我记得很久以前在学术界有人告诉我,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/

相关文章:

SQL Server 的 Java O/R 层?

sql-server-2008 - 使用命名参数调用内联 TVF,正确的语法是什么?

tsql - SQL语法中的 "*="是什么意思?

sql - 提高性能SP

sql - 如何更好地解决排序规则冲突?

SQL 显示 |从今天开始选择数据 |仅限当天

sql-server - TSQL RIGHT 字符串函数不起作用

sql-server - 如何在 SQL Server 导入和导出向导中更改目标表名称

sql - 如何连接 2 个表来分配项目?

c# - 如何在 Entity Framework 5 的 Linq 中使用 DbGeography.Filter?