【发布时间】:2011-08-24 02:54:07
【问题描述】:
正如this 之前的帖子所讨论的那样,何时使用 CHAR 而不是 VARCHAR 指出,当存储的值的长度大致相同时,可以获得性能优势。当然,我会选择 CHAR 作为存储 2 字符状态代码数据的数据类型。
我只是想确认一下,这意味着当执行对此列进行过滤的 SQL 时,必须用足够的空白填充过滤后的值以等于 char 字段的定义长度。
例如,假设一个表“CODE_TABLE”,其中第 10_CHAR_CODE 列定义为 CHAR(10):
SELECT * FROM CODE_TABLE WHERE 10_CHAR_CODE = 'ABCDE'
并且如果 10_CHAR_CODE 是另一个表的“逻辑”外键但不存在特定的关系完整性约束,则存储在 10_CHAR_CODE 查找表中的值理想情况下应该是相同的数据类型(Char(10) 以避免必须加入时执行低效的 RTRIM 函数。
(我们有一个婴儿大小的数据仓库,DBA 认为参照完整性约束效率低下,因此我们最终会在表中对数据进行不一致的数据类型定义。)
我的印象准确吗?
【问题讨论】:
-
从我读过的几件事中,您实际上可以通过加入整数比加入 varchar 列获得更好的性能。 :-D
标签: sql sql-server