说到数据库设计,我有点老派,所以我完全支持在列中使用正确的数据大小.然而,当我为一位朋友查看数据库时,我注意到他经常使用varchar(max).现在,我立即想到的是把它扔给他,并告诉他改变它.但后来我想了想,想不出一个好的理由让他不用它(如果你想知道的话,他用了一个case类型的工具来生成db).

我一直在研究varchar(max)种用法这个话题,我真的想不出什么好的理由让他不使用它.

他不使用列作为索引,数据库上的应用程序对输入有限制,因此不允许字段中出现大量条目.

如果能帮我让他看清真相,我们将不胜感激:).

推荐答案

我的答案不是关于Max的用法,而是关于VARCHAR(Max)vs TEXT的原因.

在我的书中;首先,除非你能绝对确定你只会编码英文文本,而且人们不会提及 foreign 地点的名称,否则你应该使用NVARCHAR或NTEXT.

其次,这是字段允许你做的事情.

与VARCHAR相比,文本很难更新,但您可以利用全文索引和许多聪明的东西.

另一方面,如果单元格大小为<;8000个字符,它将被视为行数据.如果更大,则出于存储目的将其视为LOB.

否则,如果您的使用相对平淡无奇,并且您不希望在数据大小方面出现问题(即您使用的是.Net,因此不必担心字符串/char*对象的大小),那么使用VARCHAR(max)就可以了.

Sql相关问答推荐

PostgreSQL集群不间断的数据系列

Snowflake SQL比较克隆x原始计数

无法找到正确的SQL查询需求

跨多列的PostgreSQL非不同对

SUM(条件)在Oracle?

JSON列之间的Postgr聚合

如何退回当年的所有参赛作品?""

如何连接第二个表并将其内容输入到第一个表的单个字段中?

更新在两个或多个面中具有交点的面

用户购买平台及金额统计

将日期时间转换为日期格式

正在编写查询.我需要将订阅的时间段分为第一个订阅中包含的另一个订阅之前和之后的时间段

根据是否出现过零来筛选数据(跨多行)

在WHERE EXISTS子查询中,列返回是否重要?

在Power Bi中将SQL代码转换为DAX

DB2 SQL查询结果多余数据

如何从三个连接表中获取数据,并始终显示第一个表中的数据,以及第三个表中的空值或现有记录?

SQL中如何转置表格 UNPIVOT是唯一的 Select 吗?

编写查询以根据级别 (p2) 返回父位置

在 MS Access 中连接相关记录