当前位置:  开发笔记 > 编程语言 > 正文

C#:标准的.Net字符串应该存储在varchar还是nvarchar中?

如何解决《C#:标准的.Net字符串应该存储在varchar还是nvarchar中?》经验,为你挑选了2个好方法。

我们有一个用C#编写的应用程序,使用.NET Framework 3.0或3.5或类似的东西.作为存储,我们使用SQL Server,我们使用Linq 2 SQL与它进行通信.

目前,数据库中的大多数(如果不是全部)文本列都设置为varchar类型(当然,长度不同).

但我开始思考......根据MSDN"字符串类型表示零个或多个Unicode字符的序列." 这是否意味着我们应该真正将这些列更改为nvarchar以便正确存储?或者这是如何工作的?他们最初将它们设置为varchar的原因是因为nvarchar需要两倍的空间(如果我已经正确理解的话).到目前为止,我已经看到它与varchar一起使用,但是我们还没有对异常的外来字符进行过多的测试......

有人可以对此有所了解吗?



1> Jon Skeet..:

除非你的文本保证在数据库的代码页中可以表示(或者你明确指定了排序规则),否则我会使用nvarchar.

有些情况下,你可以保证的内容将是ASCII码,在这种情况下,你确实可以使用VARCHAR -但我不知道如何显著的的好处将与制作的麻烦相比的绝对肯定,不仅会内容是ASCII,但你永远不会想要除ASCII之外的任何东西(或在特定的代码页内).



2> Amy B..:

事物的.net方面有很多观点.这是数据库方面的一个想法:

varchar的大小是nvarchar的一半.虽然这对于许多目的来说并不重要,但它对索引非常重要.索引宽度的一半是两倍快.这是因为可以在数据页(数据库IO的单元)上存储两倍的值.

您(来自应用程序)有一些字符串控制构造并希望用于访问重要记录.字母数字标识符(例如客户编号)属于此类别.由于您可以控制构造,因此可以强制这些构造安全地进行varchar(并且经常进行).为什么不能为这项努力获得半长双倍快速指数的好处?

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有