【发布时间】:2017-01-10 09:56:07
【问题描述】:
前言:我正在对一个“旧”的 PHP / SQL Server 2012 系统进行维护,目标是提高整体性能。
我立即意识到数据库有很多“怪癖”,但我会遵循一个政策,我决定开始更正列的类型,特别是我注意到包含文本的列实际上是 ALL nvarchar (max)作为一个应用程序网站,其中一些列是正确的,但许多列不正确。 我正在尝试编写一个脚本,允许我将“varchar”设置为不包含 unicode 文本的列的数据类型。
我做了几项研究但没有结果,我发现的唯一解决方案是使用 varchar 列插入表并验证不会出错.. 有更聪明的解决方案吗?
【问题讨论】:
-
在我看来,不要以数据类型开始你的目标,还有其他方法需要启动而不是更改数据类型,建议开始下一个链接:technet.microsoft.com/en-us/library/2008.08.database.aspx
-
将
NVARCHAR更改为VARCHAR会减小大小,但不会对性能产生太大影响。您甚至可能会因特殊字符而陷入困境,这些字符会突然返回为???尤其是处理 Web 应用程序,您应该牢记跨文化和语言... -
是的,你是对的,但是对机器进行分析我们注意到: 数据库变得庞大;查询真的很慢;一些查询可以冻结 sql server 机器;所有文本字段都是 nvarchar。我知道在很多情况下是可以纠正的,但我见过很多情况下不是绝对的。显然,我打算检查索引和查询,但我首先要确定列的数据类型的正确性。有些表有 6000 万行,我认为不必要地使用 nvarchar 而不是 varchar 可能会影响数据的权重。
标签: sql-server tsql unicode