我有兩個表:與列即使未選中,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()
時,空間使用量會少得多。
在較大的表中,這會增加存儲數據所需的頁數。這種額外的存儲可能會使查詢速度減慢一定程度。 (在有大量記錄和大量浪費空間的桌子上可能會引人注意)。