固定长度字符串的MYSQL VARCHAR或CHAR

时间:2012-05-10 00:56:40

标签: mysql char varchar

如果我知道存储在MySQL中的值总是正好是32个字符,那么使列类型CHAR而不是VARCHAR更好吗?使用VARCHAR和CHAR之间的性能差异究竟是什么?

感谢。

4 个答案:

答案 0 :(得分:7)

我会使用CHAR

如果您可能会搜索该列,CHAR会提升VARCHAR以上的小型效果。

由于您的数据大小将被修复,因此使用CHAR没有任何缺点,因为VARCHAR等效项将存储1到2个字节作为前缀。

参考:MySQL CHAR vs VARCHAR

答案 1 :(得分:7)

第一个问题的答案是“使列类型CHAR而不是VARCHAR的性能更好吗?”......是的。肯定。

如果你总是知道长度是32,那么你一定要使用CHAR。

这里也给出了几个好的答案: Why would I ever pick CHAR over VARCHAR in SQL?

答案 2 :(得分:3)

VARCHAR列use a one or two byte prefix to store the length

  

与CHAR相比,VARCHAR值存储为一个字节或两个字节长度的前缀加数据。长度前缀表示值中的字节数。如果值不超过255个字节,则列使用一个长度字节;如果值可能需要超过255个字节,则列使用两个长度字节。

因此,VARCHAR列会略大一些。如果你知道它总是正好是32个字符,那么CHAR似乎是合理的。几乎在任何情况下,你都不确定长度,我会选择VARCHAR。

答案 3 :(得分:0)

如果字符串总是32个字符(可能你有一个md5哈希),那么去Char(32) 您始终可以针对任何表运行此脚本,并查看mysql要说的内容

SELECT * FROM table PROCEDURE ANALYSE();

这将分析您的整行并给您一些建议。只有当你的桌子上有一个不错的数字或行时才能正常工作。