VARCHAR或nvarchar(varchar or nvarchar)

2019-08-01 03:10发布

我第一次存储姓和名,每行最多30个字符。 这是更好的varcharnvarchar

我已阅读, nvarchar占用比两倍的空间varcharnvarchar用于国际化。

所以,你有什么建议,我应该使用: nvarcharvarchar

也请让我知道两者的性能。 对于两个性能是相同的,或者它们在性能上有所不同。 因为空间不是太大的问题。 问题是性能。

Answer 1:

基本上,NVARCHAR意味着你可以处理大量字母的,不只是普通的英语。 从技术上讲,这意味着支持unicode,不只是ANSI。 这意味着全角字符或大约两倍的空间。 这些天,磁盘空间这么便宜,你还不如用nvarchar的从一开始,而不是去通过具有产品的生命周期内改变的痛苦。

如果您确定您永远只需要支持一种语言,你可以用VARCHAR坚持下来,否则我会去为nvarchar。

这已讨论了SO之前这里 。

编辑:在注释中提到改为ASCII到ANSI。



Answer 2:

首先,为了澄清, nvarchar存储unicode数据而varchar存储ANSI(8位)的数据。 他们相同的功能,但为nvarchar占用两倍的空间。

一般情况下,我更喜欢使用存储的用户名varchar数据类型,除非那些名字具有落在哪个字符边界的字符varchar可以存储。

这也取决于数据库归类也。 对于如你无法俄文字符存储在varchar字段,如果你的数据库归类为LATIN_CS_AS 。 但是,如果你是在本地的应用程序,这将只在俄罗斯使用的工作,你会设置数据库归类到俄罗斯。 这将完成的是,它可以让你在输入俄文字符varchar领域,节省一些空间。

但是,现在,一个天,大多数应用程序的开发是国际性的,所以你自己必须决定所有用户将被注册,并基于该决定的数据类型。



Answer 3:

我已经红认为,为nvarchar为varchar花费两倍。

是。

nvarchar的用于国际化。

是。

ü建议我应该使用为nvarchar或varchar?

这取决于应用程序。



Answer 4:

默认情况下,去为nvarchar。 有很少的理由去与这些VARCHAR天,充分的理由去为nvarchar(允许国际字符;所讨论的)。



Answer 5:

VARCHAR是每个字符1个字节,nvarchar的是每个字符2个字节。

您将使用更多的空间与nvarchar的,但还有更多的允许的字符。 额外的空间是可以忽略不计,但你可能会在未来怀念那些多余的字符。 即使你不希望需要国际化,人们往往有非英文字符(如电子,N或O)在他们的名字。

我会建议你使用nvarchar的。



Answer 6:

我有红认为,为nvarchar需要两倍VARCHAR

是。 据微软称:“存储大小,以字节为单位,是两次的字符数输入+ 2个字节”( http://msdn.microsoft.com/en-us/library/ms186939(SQL.90).aspx )。

但是存储便宜; 我从来不担心一些额外的字节。

此外,保存自己的麻烦,未来并设置最大宽度的东西更慷慨,喜欢100个字符。 绝对没有任何存储开销,这个时候你使用VARCHAR或nvarchar(相对于字符/ NCHAR)。 你永远不知道什么时候你会遇到三管姓或超过30个字符长一些外国名字。

nvarchar的用于国际化。

为nvarchar可以存储任何Unicode字符,如非拉丁字符(阿拉伯语,中国等)的字符。 我不知道如何申请将被获取数据(通过网络,通过GUI工具包等),但很可能,无论技术,您正在使用支持Unicode的开箱。 这意味着,任何用户输入的数据(如姓名) 有接受非拉丁字符的可能性,如果不是现在,然后在未来。

如果我是建设一个新的应用程序,我会用nvarchar的。 如果你喜欢叫它“经得起时间的考验”。



Answer 7:

nvarchar类型是Unicode,因此它可以对存在于地球上的每一种语言的任何字符只是处理。 的字符被存储为UTF-16或UCS-2(不知道哪个,差异是微妙的),因此,每个字符使用两个字节。

VARCHAR类型使用8位字符集,因此它仅限于您选择字段的字符集的255个字符。 有迹象表明,处理不同的字符组不同的字符集,因此它通常是文本当地一个国家或地区就足够了。

如果VARCHAR适合你想要做什么,你应该使用。 这是一个有点更少的数据,所以它整体的速度稍快。 如果您需要处理各种各样的人物,因此请使用nvarchar。



Answer 8:

性能:
一个理由使用VARCHAR超过nvarchar的是,你可以有两倍于你的指标很多人物! 索引键被限制为900个字节
可用性:
如果应用程序永远只适用于一个英语的观众及包含英文名称,使用VARCHAR



Answer 9:

数据存储:“苏尼尔”

VARCHAR(5)开7B为nvarchar(5)开12B



文章来源: varchar or nvarchar