如果我知道存储在MySQL中的值总是正好是32个字符,那么使列类型CHAR
而不是VARCHAR
更好吗?使用VARCHAR和CHAR之间的性能差异究竟是什么?
感谢。
答案 0 :(得分:7)
CHAR
。如果您可能会搜索该列,CHAR
会提升VARCHAR
以上的小型效果。
由于您的数据大小将被修复,因此使用CHAR
没有任何缺点,因为VARCHAR
等效项将存储1到2个字节作为前缀。
答案 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();
这将分析您的整行并给您一些建议。只有当你的桌子上有一个不错的数字或行时才能正常工作。