我需要在SQL Server数据库中创建一列。该列的条目将包含来自聊天的消息。此前这些消息已经作为注释存储。数据库中的聊天消息和评论的典型长度是什么?
我主要quetion是: 什么是聊天消息和评论典型的文本长度?
顺便说一句: 如果我用varchar(max)会发生什么?它将如何影响数据库的大小和性能?在考虑文本长度时,最好使用2的幂或10的幂(例如128而不是100)?
我需要在SQL Server数据库中创建一列。该列的条目将包含来自聊天的消息。此前这些消息已经作为注释存储。数据库中的聊天消息和评论的典型长度是什么?
我主要quetion是: 什么是聊天消息和评论典型的文本长度?
顺便说一句: 如果我用varchar(max)会发生什么?它将如何影响数据库的大小和性能?在考虑文本长度时,最好使用2的幂或10的幂(例如128而不是100)?
使用VARCHAR(MAX)有一个缺点:不能在此列上定义索引。
通常,您的应用程序应该为聊天消息施加最大长度。非常大的限制取决于应用程序的用途。但超过1000字节的内容可能不是合法的消息,而是试图破坏您的服务。
如果您的最大值是2的幂,或者幂次为10或任何其他值对性能没有影响,只要该行适合一个(8KB)页面即可。
公平起见,除非您要让用户能够通过消息文本的前n个字符来查找消息,否则您不太可能想要为聊天消息编制索引,这不是典型的情况对于大多数聊天应用程序... –
当然。但需要提及的是,所有人都不会开始使用VARCHAR(MAX)。 – Twinkles
同意 - 我只是想澄清一点:) –
绝对使用N/VARCHAR(MAX)
,它可以增长到2GB(如果我没记错的话)。它会根据需要增长,所以它对空间非常有效,除非你只存储非常少量的数据。
我不认为会有一个“典型”的答案,因为它取决于你的系统试图促进什么样的“对话”。 –
我从MSDN发现了一条提示:_Use varchar(max)当列数据条目的大小变化很大时,并且大小可能会超过8,000字节._' –
'来自聊天的消息' - >什么聊天?聊天程序的界面很可能决定了最大长度。你应该调查这些。另外,不要一次提出两个问题。 –