【发布时间】:2019-10-20 06:35:10
【问题描述】:
我们与我们的开发人员讨论了 VARCHAR 列的使用,因为他们将每个 varchar 字段定义为 varchar(255)、varchar(500)... 并且远大于字段的最大长度, varchar 的长度对 db2 的性能有影响吗?我们发现对于 30 字节或更少的列,建议使用 char 而不是 varchar,我们担心大于 30 字节的 varchar 文件。
【问题讨论】:
我们与我们的开发人员讨论了 VARCHAR 列的使用,因为他们将每个 varchar 字段定义为 varchar(255)、varchar(500)... 并且远大于字段的最大长度, varchar 的长度对 db2 的性能有影响吗?我们发现对于 30 字节或更少的列,建议使用 char 而不是 varchar,我们担心大于 30 字节的 varchar 文件。
【问题讨论】:
允许过多的列长度不是一个好主意。如果你允许,比方说,FirstName 列的最大长度为 500,你最终可能会在那里找到一个相当长的不相关的故事,因为如果允许的话为什么不呢:)
至于性能影响。
唯一的问题可能在这里,如果为数据库打开了Extended row size(否则您根本无法创建太“宽”的表),并且行的总长度超过了表空间页面大小。一些 varchar 列值从数据页中取出,将来需要更多的 IO 才能访问这样的行。你应该记住这样的行为。在不受控制的 varchar 列长度的情况下,此类事件的概率更高。
【讨论】:
这可能会对 ORGANIZE BY COLUMN 表造成性能影响。可以在列数据引擎中处理的声明的总宽度存在限制,如果在查询计划中违反此限制,则查询的其余部分将在行数据引擎中处理。
【讨论】: