gpt4 book ai didi

sql-server - 将列从 varchar(8000) 更改为 varchar(max) 是否存在任何隐藏的陷阱?

转载 作者:行者123 更新时间:2023-12-02 10:16:31 25 4
gpt4 key购买 nike

我有很多(超过一千个地方)遗留的 T-SQL 代码,它们只能将 INSERT 插入 varchar(8000) 实用程序表中的列。我们的需求发生了变化,现在该列需要能够处理更大的值。因此,我需要创建该列 varchar(max)。这只是一个普通的数据列,没有对其执行搜索,没有索引,只有一个过程读取它,它是 INSERT 并忘记了应用程序(几乎就像一个日志条目)。

我计划仅在实际生成较大数据的几个地方以及处理此列的单个存储过程中进行更改。

  • 将列从 varchar(8000) 更改为 varchar(max) 是否存在任何隐藏的陷阱?
  • 所有 T-SQL 字符串函数的工作方式是否相同:LEN()RTRIM()SUBSTRING()
  • 谁能想象出为什么我必须对认为该列仍然是 varchar(8000) 的代码进行任何更改?

最佳答案

  • 所有 MAX 类型都有较小的性能损失,请参阅 Performance comparison of varchar(max) vs. varchar(N) .
  • 如果您的维护包括在线操作(在线索引重建),您将失去执行这些操作的可能性。 Online operations are not supported for tables with BLOB columns :
    • Clustered indexes must be created, rebuilt, or dropped offline when the underlying table contains large object (LOB) data types: image, ntext, text, varchar(max), nvarchar(max), varbinary(max), and xml.
    • Nonunique nonclustered indexes can be created online when the table contains LOB data types but none of these columns are used in the index definition as either key or nonkey (included) columns. Nonclustered indexes defined with LOB data type columns must be created or rebuilt offline.

性能损失非常,所以我不会担心。对于真正热门的必须在线操作表来说,失去在线重建的能力可能会产生问题。除非必须在线操作,否则我会投票支持并将其更改为 MAX。

关于sql-server - 将列从 varchar(8000) 更改为 varchar(max) 是否存在任何隐藏的陷阱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3141588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com