首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我创建一个varchar(65535),我得到一个中间文本?

问为什么我创建一个varchar(65535),我得到一个中间文本?
EN

Stack Overflow用户
提问于 2011-10-01 11:10:03
回答 2查看 6.8K关注 0票数 16

中介文本和varchar(65535)是一回事吗?我的意思是,它们是否都直接存储在表中,还是中间文本类型正在存储指针?我之所以问这个问题,是因为如果我试图创建一个varchar(65535),它就会自动转换为中介文本(如果长度实际上大于21811 )。

我还有一个相关的问题,那就是:

我在一个表中有一些字段,我希望能够存储很多字符(大约10,000个)。但在现实中,它几乎所有的时间存储不超过10个字符。

因此,我的问题是,我是否需要使用文本或varchar(10000)类型来获得最佳性能?

我认为varchar型更适合这种情况。

提前谢谢你的回答。

编辑

我不明白为什么他们说,从MySQL5.0.3开始,我们可以创建一个varchar(65535),但是当我们尝试这样做时,它会将它转换成一个中介文本。对我来说,varchar和text (中介文本包含)之间的区别在于它们的存储方式(使用指针与否)。那么,为什么他们说如果我们不能,我们可以创建长度为65535的varchar呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-31 12:36:16

我在回答我自己的问题:

那是因为我用的是一个多字节字符。如果使用utf-8排序规则,您将无法创建一个包含21000多个字符的varchar。但是如果你使用ascii,你会的。

票数 15
EN

Stack Overflow用户

发布于 2011-10-01 11:14:17

根据mysql.com,中间文本的长度为L+3字节。对我来说,这意味着,如果您有一个空字段,它将是3个字节。如果您有一个空varchar,则该字段的长度将为1字节。

我们清楚地提到这里

在VARCHAR 5.0.3之前,长度规格大于255的VARCHAR列被转换为最小的文本类型,可以保存给定长度的值。例如,VARCHAR(500)被转换为文本,VARCHAR(200000)被转换为MEDIUMTEXT。但是,这种转换会影响拖尾空间的移除。

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

https://stackoverflow.com/questions/7619846

复制
相关文章

相似问题

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