char vs varchar用于法语口音(多字节字符)

时间:2017-04-11 21:09:43

标签: mysql performance char varchar

我将拥有一个包含单词和一列的大型数据库 但是,该表最多只能包含3个字母 会有一些法语口音,如â,ê,î,ô,û,

一个例子是拥有一个可能有的列 [ID] [列2] 1 a 2 b 3 vf 4êf 5 t

所以它们不会一直被修复,有时候会有一些行 有重音字符,据我所知,需要多一个字节。

我在想什么是为该列指定的最佳选择? CHAR可能更快,因为它们每次最多需要3个字节 但经常会存储1-2个字节

另一方面,VARCHAR是可变长度的,我不需要指定任何东西 但我已经读过char更好的性能,因为我将阅读专栏 经常说的话。

您认为最好的是什么?为什么?

2 个答案:

答案 0 :(得分:0)

使用VARCHAR,除非您正在谈论固定长度字段,例如保证一定长度的ISO国家/地区代码。

记住字符字节不是一回事。此列和/或表和/或连接的字符集和/或原始字符串将对实际存储的内容产生影响。在某些字符集中,é这样的字符是一个字节,而在其他字符集中,如UTF-8,它是两个字符。其他字符将是三个或四个字节,需要utf8mb4

如果您要求CHAR(2),那么将允许列的任何字符集的两个字符设置为。

答案 1 :(得分:0)

过早优化。

获取记录很多比在行中的任何事情都要贵。

几乎总是VARCHAR(n),其中n是数据的合适长度。

CHAR(n)对于hex,country_code,postal_code,uuid等非常有用 - 固定长度和CHARACTER SET ascii的内容。

当然,对于法国人和欧洲大部分地区来说,你可以使用单字节CHARACTER SET latin1字符。但这是一个非常小的优化,不值得做。