我们的团队正计划将 SQL Server 数据库上的排序规则编码更新为 UTF-8。我们还计划更新我们的表模式以nvarchar()
支持真正的 Unicode 字符。然而,我们试图确定的是,这样做会遇到哪些潜在的地雷?
例如,我们的查询会运行得更慢吗?数据库中的当前数据是否有可能损坏?
作为参考,SQL Server 被用作 PHP Web 应用程序的后端,该应用程序在 Linux 主机上的 Apache 上运行。
我们的团队正计划将 SQL Server 数据库上的排序规则编码更新为 UTF-8。我们还计划更新我们的表模式以nvarchar()
支持真正的 Unicode 字符。然而,我们试图确定的是,这样做会遇到哪些潜在的地雷?
例如,我们的查询会运行得更慢吗?数据库中的当前数据是否有可能损坏?
作为参考,SQL Server 被用作 PHP Web 应用程序的后端,该应用程序在 Linux 主机上的 Apache 上运行。
请参阅NVARCHAR 上的 MSDN SQL Server 联机丛书- SQL Server 仅支持 UCS-2(每个字符 2 个字节 = UTF-16),但正如您所说,这是真正的 Unicode 。
另请参阅dba.stackexchange.com 上的此问题(及其答案)以获得更全面的解释和背景。
使用所有列的主要缺点nvarchar
是,这只是普通的使用两倍的存储空间varchar
- 所有字符都存储为 2 个字节。除此之外-我没有看到使用nvarchar
而不是varchar
...的任何大问题