2014-01-20 16 views
1

我需要在SQL Server数据库中创建一列。该列的条目将包含来自聊天的消息。此前这些消息已经作为注释存储。数据库中的聊天消息和评论的典型长度是什么?

我主要quetion是: 什么是聊天消息评论典型的文本长度?

顺便说一句: 如果我用varchar(max)会发生什么?它将如何影响数据库的大小和性能?在考虑文本长度时,最好使用2的幂或10的幂(例如128而不是100)?

+0

我不认为会有一个“典型”的答案,因为它取决于你的系统试图促进什么样的“对话”。 –

+0

我从MSDN发现了一条提示:_Use varchar(max)当列数据条目的大小变化很大时,并且大小可能会超过8,000字节._' –

+0

'来自聊天的消息' - >什么聊天?聊天程序的界面很可能决定了最大长度。你应该调查这些。另外,不要一次提出两个问题。 –

回答

1

使用VARCHAR(MAX)有一个缺点:不能在此列上定义索引。

通常,您的应用程序应该为聊天消息施加最大长度。非常大的限制取决于应用程序的用途。但超过1000字节的内容可能不是合法的消息,而是试图破坏您的服务。

如果您的最大值是2的幂,或者幂次为10或任何其他值对性能没有影响,只要该行适合一个(8KB)页面即可。

+0

公平起见,除非您要让用户能够通过消息文本的前n个字符来查找消息,否则您不太可能想要为聊天消息编制索引,这不是典型的情况对于大多数聊天应用程序... –

+0

当然。但需要提及的是,所有人都不会开始使用VARCHAR(MAX)。 – Twinkles

+0

同意 - 我只是想澄清一点:) –

1

简答题 - 没关系。

MSDN

存储大小为输入+ 2个字节的数据的实际长度。

因此,如果值不超过10个字符,VARCHAR(10)和VARCHAR(10000)将消耗相同数量的数据。

0

绝对使用N/VARCHAR(MAX),它可以增长到2GB(如果我没记错的话)。它会根据需要增长,所以它对空间非常有效,除非你只存储非常少量的数据。