CHAR与VARCHAR以及加入时的后果

Cha*_*adD 2 sql sql-server

由于以前发布会议讨论时,可能需要使用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认为参照完整性约束效率低下,因此我们最终会在表之间对数据进行不一致的数据类型定义.)

我的印象准确吗?

Mar*_*ith 7

在SQL Server中的字符串比较中忽略尾随空格.没有必要RTRIM自己(这将使条件不可分割)