我第一次存储姓和名,每行最多30个字符。 这是更好的varchar
或nvarchar
。
我已阅读, nvarchar
占用比两倍的空间varchar
和nvarchar
用于国际化。
所以,你有什么建议,我应该使用: nvarchar
或varchar
?
也请让我知道两者的性能。 对于两个性能是相同的,或者它们在性能上有所不同。 因为空间不是太大的问题。 问题是性能。
我第一次存储姓和名,每行最多30个字符。 这是更好的varchar
或nvarchar
。
我已阅读, nvarchar
占用比两倍的空间varchar
和nvarchar
用于国际化。
所以,你有什么建议,我应该使用: nvarchar
或varchar
?
也请让我知道两者的性能。 对于两个性能是相同的,或者它们在性能上有所不同。 因为空间不是太大的问题。 问题是性能。
基本上,NVARCHAR意味着你可以处理大量字母的,不只是普通的英语。 从技术上讲,这意味着支持unicode,不只是ANSI。 这意味着全角字符或大约两倍的空间。 这些天,磁盘空间这么便宜,你还不如用nvarchar的从一开始,而不是去通过具有产品的生命周期内改变的痛苦。
如果您确定您永远只需要支持一种语言,你可以用VARCHAR坚持下来,否则我会去为nvarchar。
这已讨论了SO之前这里 。
编辑:在注释中提到改为ASCII到ANSI。
首先,为了澄清, nvarchar
存储unicode数据而varchar
存储ANSI(8位)的数据。 他们相同的功能,但为nvarchar占用两倍的空间。
一般情况下,我更喜欢使用存储的用户名varchar
数据类型,除非那些名字具有落在哪个字符边界的字符varchar
可以存储。
这也取决于数据库归类也。 对于如你无法俄文字符存储在varchar
字段,如果你的数据库归类为LATIN_CS_AS
。 但是,如果你是在本地的应用程序,这将只在俄罗斯使用的工作,你会设置数据库归类到俄罗斯。 这将完成的是,它可以让你在输入俄文字符varchar
领域,节省一些空间。
但是,现在,一个天,大多数应用程序的开发是国际性的,所以你自己必须决定所有用户将被注册,并基于该决定的数据类型。
我已经红认为,为nvarchar为varchar花费两倍。
是。
nvarchar的用于国际化。
是。
ü建议我应该使用为nvarchar或varchar?
这取决于应用程序。
默认情况下,去为nvarchar。 有很少的理由去与这些VARCHAR天,充分的理由去为nvarchar(允许国际字符;所讨论的)。
VARCHAR是每个字符1个字节,nvarchar的是每个字符2个字节。
您将使用更多的空间与nvarchar的,但还有更多的允许的字符。 额外的空间是可以忽略不计,但你可能会在未来怀念那些多余的字符。 即使你不希望需要国际化,人们往往有非英文字符(如电子,N或O)在他们的名字。
我会建议你使用nvarchar的。
我有红认为,为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的。 如果你喜欢叫它“经得起时间的考验”。
nvarchar类型是Unicode,因此它可以对存在于地球上的每一种语言的任何字符只是处理。 的字符被存储为UTF-16或UCS-2(不知道哪个,差异是微妙的),因此,每个字符使用两个字节。
VARCHAR类型使用8位字符集,因此它仅限于您选择字段的字符集的255个字符。 有迹象表明,处理不同的字符组不同的字符集,因此它通常是文本当地一个国家或地区就足够了。
如果VARCHAR适合你想要做什么,你应该使用。 这是一个有点更少的数据,所以它整体的速度稍快。 如果您需要处理各种各样的人物,因此请使用nvarchar。
性能:
一个理由使用VARCHAR超过nvarchar的是,你可以有两倍于你的指标很多人物! 索引键被限制为900个字节
可用性:
如果应用程序永远只适用于一个英语的观众及包含英文名称,使用VARCHAR
数据存储:“苏尼尔”
VARCHAR(5)开7B为nvarchar(5)开12B