如果我知道在MySQL中存储的值始终是32个字符,那么将列类型设置为
感谢。
CHAR
而不是VARCHAR
是否可以提高性能?使用VARCHAR和CHAR之间的性能差异具体是什么?感谢。
CHAR
。如果您可能在该列上搜索,CHAR
比VARCHAR
提供了小的性能提升。
由于您的数据大小将被固定,因此使用CHAR
没有任何缺点,因为VARCHAR
等效项将作为前缀存储一到两个字节。
对于你的第一个问题,“将列类型设置为CHAR而不是VARCHAR是否有更好的性能?”…答案是肯定的。绝对是。
如果您始终知道长度将是32,则一定要使用CHAR。
这里还提供了几个很好的答案: 为什么我在SQL中会选择CHAR而不是VARCHAR?
VARCHAR列使用一到两个字节的前缀来存储长度:
与CHAR不同,VARCHAR值以一个或两个字节的长度前缀加上数据存储。长度前缀表示值中的字节数。如果值要求不超过255个字节,则列使用一个长度字节,如果值可能需要超过255个字节,则使用两个长度字节。
因此,VARCHAR列会略微大一些。如果您知道它始终只有32个字符,那么CHAR似乎是合理的选择。在几乎所有您不完全确定长度的情况下,我建议使用VARCHAR。
SELECT * FROM table PROCEDURE ANALYSE();
这将分析您的所有行并为您提供一些建议。仅在表中有相当数量的行时才能正常工作。