首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于法语口音的char和varchar (多字节字符)

用于法语口音的char和varchar (多字节字符)
EN

Stack Overflow用户
提问于 2017-04-11 21:09:42
回答 2查看 1.1K关注 0票数 0

我将有一个包含单词的大型数据库,表格中的一栏最多有3个字母,但也会有一些法语口音,如-,

一个例子是有一个列,它可能有id 1 a 2b 3 vf 4存在5t。

因此,它们不会在任何时候都被修复,有时某些行会有重音字符,据我所知,这些字符还需要一个字节。

我在想,为那一栏指定什么是最好的选择?CHAR可能更快,因为它们每次最多需要3个字节,但通常情况下会存储1-2字节。

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-11 21:32:02

使用VARCHAR,除非您说的是固定长度的字段,比如保证一定长度的ISO国家代码。

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

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

票数 1
EN

Stack Overflow用户

发布于 2017-04-12 02:13:23

过早优化

获取记录比您在行中所做的任何事情都要昂贵得多。

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

CHAR(n)只对十六进制、country_code、postal_code、uuid等有用--这些都是固定长度和CHARACTER SET ascii的东西。

当然,对于法语和欧洲大部分地区来说,你可以用一个字节的CHARACTER SET latin1字符。但这是一个如此微小的优化,不值得去做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43356250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档