我有两个表:与列即使未选中,varchar是否会影响性能?
表A,有列INT t_a, INT t_b, INT t_c, INT t_d, VARCHAR t_var
表B,INT t_a, INT t_b, INT t_c, INT t_d, CHAR t_cha
如果我选择列T_A,是否有表A和表B之间的任何性能差异?
我有两个表:与列即使未选中,varchar是否会影响性能?
表A,有列INT t_a, INT t_b, INT t_c, INT t_d, VARCHAR t_var
表B,INT t_a, INT t_b, INT t_c, INT t_d, CHAR t_cha
如果我选择列T_A,是否有表A和表B之间的任何性能差异?
理论上,在处理VARCHAR时应该会有性能损失,因为您无法使用固定的地址计算。
但实际上这是现在不可见的。
没有区别。 char和varchar之间选择
是的,但它非常微妙。我认为字符字段实际上有与他们相关的长度。
数据存储方式有所不同。即使在末尾有空格时,char
字段也会将所有字符存储在数据库中。 varchar()
字段将只存储字段所需的长度。
所以,如果你有包含美国各州的名字,然后一个表:
create table states (
stateid int,
statename char(100)
);
将占据像在数据库100 * 50 + 100 * 4 = 5400字节。使用varchar()
时,空间使用量会少得多。
在较大的表中,这会增加存储数据所需的页数。这种额外的存储可能会使查询速度减慢一定程度。 (在有大量记录和大量浪费空间的桌子上可能会引人注意)。