我在SQL Server 2008数据库中有下表,其中包含许多用于文本描述的长varchar字段。我想知道用于这些的最佳数据类型是什么。目前我使用的是具有2000个字符限制的varchar,但如果人们需要添加更多文本,这可能会导致问题。在表格中多次使用TEXT有问题吗?你有什么建议?
Table
name varchar(250)
description1 varchar(2000)
description2 varchar(2000)
description3 varchar(2000)
description4 varchar(2000)
description5 varchar(2000)
答案 0 :(得分:4)
对于SQL Server 2008,我认为推荐的做法是使用varchar(max)而不是text - 文本 - 我相信,在将来的SQL Server版本中不推荐使用。
你的表设计对我来说似乎听起来不错,但我怀疑有人会建议如果列填充到最大值 - 并且表行数很大 - 那么可能会出现一些性能问题。 SQL Server每个数据库页面只能存储8K,因此必须拆分我们的表 - 这会对性能产生影响。
答案 1 :(得分:1)
在我看来,使用TEXT存在问题 - 它已被弃用!
而不是使用VARCHAR(2000)
,只需使用VARCHAR(MAX)
- 它可以为您提供TEXT列的所有大小,并且您只需要VARCHAR(...)
即可操作它列。
答案 2 :(得分:0)
使用varchar(MAX)
的另一个好处是字段不会计入您的8K最大行大小 - 因为每个字段本身都可以大于8K,SQL会尽快将它们存储在数据页面之外必要的,所以存储在页面中的所有内容都是指向数据的指针。