首页 文章

VARCHAR和CHAR有什么区别?

提问于
浏览
298

MySQL中的VARCHAR和CHAR有什么区别?

我正在尝试存储MD5哈希值 .

14 回答

  • 189

    VARCHAR 是可变长度的 .

    CHAR 是固定长度 .

    如果您的内容是固定大小,那么使用 CHAR 可以获得更好的效果 .

    有关详细说明,请参阅CHAR and VARCHAR Types上的MySQL页面(请务必阅读注释) .

  • 2

    CHAR

    • 用于存储 fixed length 的字符串值 .

    • 最大号码数据类型可以容纳的字符是 255 characters .

    • 它是 50% faster 而不是VARCHAR .

    • 使用 static memory allocation .

    VARCHAR

    • 用于存储 variable length 字母数字数据 .

    • 此数据类型可容纳的最大值为

    • Pre-MySQL 5.0.3: 255 characters .

    • Post-MySQL 5.0.3: 65,535 characters 共享该行 .

    • 这是 slower 而不是CHAR .

    • 使用 dynamic memory allocation* .

  • 8

    CHAR Vs VARCHAR

    CHAR用于固定长度大小变量
    VARCHAR用于可变长度大小变量 .

    例如 .

    Create table temp
    (City CHAR(10),
    Street VARCHAR(10));
    
    Insert into temp
    values('Pune','Oxford');
    
    select length(city), length(street) from temp;
    

    输出将是

    length(City)          Length(street)
    10                    6
    

    结论:要有效地使用存储空间,必须使用VARCHAR而不是CHAR,如果变量长度是可变的

  • 8

    CHAR(x) 列只能包含 x 个字符 .
    VARCHAR(x) 列最多可包含 x 个字符 .

    由于你的MD5哈希值总是相同,你应该使用 CHAR .

    但是,您不应该首先使用MD5;它已知缺点 .
    请改用SHA2 .
    如果您正在哈希密码,则应使用bcrypt .

  • 2

    如果输入的字符短于声明的长度,则Varchar会截断尾随空格,而char则不会 . Char将填充空格,并且始终是声明长度的长度 . 在效率方面,varchar更擅长修剪字符以允许更多调整 . 但是,如果您知道char的确切长度,char将以更快的速度执行 .

    要查看有关此内容的更多详细信息,请查看:

    http://www.allthingsdiscussed.com/More/Difference-between-char-and-varchar-in-mysql

  • 0

    MySQL中VARCHAR和CHAR之间有什么区别?

    为了给出答案,我想补充一点,在OLTP系统或频繁更新的系统中,考虑使用 CHAR 甚至是可变大小的列,因为更新期间可能存在 VARCHAR 列碎片 .

    我正在尝试存储MD5哈希值 .

    如果安全性非常重要,MD5哈希不是最佳选择 . 但是,如果您将使用任何散列函数,请考虑使用 BINARY 类型(例如,MD5将产生16字节散列,因此对于代表十六进制数字的32个字符, BINARY(16) 将足够而不是 CHAR(32) . 这将节省更多空间并提高性能 .

  • 4

    在今天的大多数RDBMS中,它们都是同义词 . 但是,对于仍有区别的系统,CHAR字段存储为固定宽度列 . 如果将其定义为CHAR(10),则会向表中写入10个字符,其中“填充”(通常为空格)用于填充数据未用完的任何空间 . 例如,保存“bob”将保存为(“bob”7个空格) . VARCHAR(可变字符)列用于存储数据,而不会浪费CHAR列所需的额外空间 .

    一如既往,Wikipedia说得更响 .

  • 5

    CHAR是固定长度的字段; VARCHAR是一个可变长度字段 . 如果您存储的字符串具有可变长度(如名称),则使用VARCHAR,如果长度始终相同,则使用CHAR,因为它的尺寸效率稍高,而且速度稍快 .

  • 58

    CHAR是固定长度,VARCHAR是可变长度 . CHAR每个条目始终使用相同数量的存储空间,而VARCHAR仅使用存储实际文本所需的数量 .

  • -5

    char是固定长度的字符数据类型,varchar是可变长度的字符数据类型 .

    由于char是固定长度的数据类型,因此char值的存储大小等于此列的最大大小 . 由于varchar是可变长度数据类型,因此varchar值的存储大小是输入数据的实际长度,而不是此列的最大大小 .

    当列中的数据条目预期大小相同时,可以使用char . 当列中的数据条目的大小变化很大时,可以使用varchar .

  • -10

    根据High Performance MySQL书:

    VARCHAR存储可变长度字符串,是最常见的字符串数据类型 . 它可以比固定长度需要更少的存储空间类型,因为它只使用所需的空间(即,使用较少的空间来存储较短的值) . 例外情况是使用ROW_FORMAT = FIXED创建的MyISAM表,它在磁盘上为每行使用固定数量的空间,因此可能浪费空间 . VARCHAR有助于提高性能,因为它节省了空间 . CHAR是固定长度的:MySQL总是为指定的字符数分配足够的空间 . 存储CHAR值时,MySQL会删除任何尾随空格 . (对于MySQL 4.1和旧版本中的VARCHAR也是如此 - CHAR和VAR CHAR在逻辑上是相同的,仅在存储格式上有所不同 . )根据需要使用空格填充值进行比较 .

  • 105

    Char 具有固定长度(支持2000个字符),它代表字符是数据类型

    Varchar 具有可变长度(支持4000个字符)

  • 300

    Char或varchar-用于输入文本数据,其中长度可以在括号中表示Eg- name char(20)

  • -4

    CHAR :

    • 支持字符和数字 .

    • 支持2000个字符 .

    • 固定长度 .

    VARCHAR :

    • 支持字符和数字 .

    • 支持4000个字符 .

    • 可变长度 .

    任何意见......!!!!

相关问题