Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 法语口音的char与varchar(多字节字符)_Mysql_Performance_Char_Varchar - Fatal编程技术网

Mysql 法语口音的char与varchar(多字节字符)

Mysql 法语口音的char与varchar(多字节字符),mysql,performance,char,varchar,Mysql,Performance,Char,Varchar,我将有一个大数据库的话,和一列 但是,表中的字符最多有3个字母 会有一些法语口音,比如“哦,î,î,ô 一个例子是有一个可能 [同上][2] 1A 2 b 3 vf 4英尺 5吨 因此,它们不会一直固定,有时某些行会固定 有重音字符,据我所知,需要多一个字节 我在想,为该专栏指定的最佳选项是什么? CHAR可能更快,因为每次最多需要3个字节 但通常会存储1-2个字节 另一方面,VARCHAR是可变长度的,我不需要指定任何内容 但我已经读到char对性能更好,因为我将阅读列 我经常说话 你认为什么

我将有一个大数据库的话,和一列 但是,表中的字符最多有3个字母 会有一些法语口音,比如“哦,î,î,ô

一个例子是有一个可能 [同上][2] 1A 2 b 3 vf 4英尺 5吨

因此,它们不会一直固定,有时某些行会固定 有重音字符,据我所知,需要多一个字节

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

另一方面,VARCHAR是可变长度的,我不需要指定任何内容 但我已经读到char对性能更好,因为我将阅读列 我经常说话


你认为什么是最好的?为什么呢?

使用
VARCHAR
,除非您讨论的是固定长度字段,如ISO国家代码,这些字段保证一定长度


记住,字符和字节不是一回事。此列和/或表的字符集和/或连接和/或原始字符串将影响实际存储的内容。在一些字符集中,像
é
这样的字符是一个字节,而在另一些字符集中,像UTF-8,它是两个字节。其他特征如过早优化

获取一条记录的成本要比在该行中执行的任何操作都要高

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

CHAR(n)
仅对十六进制、国家/地区代码、邮政编码、uuid等有用,这些都是固定长度和
字符集ascii


当然,对于法语和欧洲大部分地区,您可以使用一个字节
字符集拉丁文1
字符。但这是一个非常小的优化,不值得去做。

谢谢你,你解释得很好。我的想法完全正确!如果这解决了你的问题,如果你愿意,标记为接受。帮助有相同问题的其他人找到正确的解决方案。感谢您的解释