mysql中VARCHAR和TEXT之间的区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql中VARCHAR和TEXT之间的区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2025字,纯文字阅读大概需要3分钟。
内容图文
当我们在mysql中使用VARCHAR列创建表时,我们必须为它设置长度.但对于TEXT类型,我们不必提供长度.
VARCHAR和TEXT之间有什么区别?
解决方法:
TL; DR
文本
>固定最大大小为65535个字符(不能限制最大大小)
>占用2个字节的磁盘空间,其中c是存储字符串的长度.
>不能成为索引的一部分
VARCHAR(M)
> M个字符的最大可变大小
> M需要在1到65535之间
>需要1 c字节(对于M≤255)或2 c(对于256≤M≤65535)磁盘空间字节,其中c是存储字符串的长度
>可以是索引的一部分
更多细节
TEXT的最大固定大小为2¹?-1 = 65535个字符.
VARCHAR具有可变的最大尺寸M,最大为M = 2 15 -1.
所以你不能选择TEXT的大小,但你可以选择VARCHAR.
另一个区别是,您不能在TEXT列上放置索引(全文索引除外).
因此,如果要在列上有索引,则必须使用VARCHAR.但请注意,索引的长度也是有限的,因此如果您的VARCHAR列太长,则必须仅使用索引中VARCHAR列的前几个字符(请参阅CREATE INDEX的文档).
但是如果你知道可能的输入字符串的最大长度只有M,你也想使用VARCHAR,例如电话号码或姓名或类似的东西.然后你可以使用VARCHAR(30)而不是TINYTEXT或TEXT,如果有人试图在你的电话号码栏中保存所有三个“指环王”书籍的文本,你只存储前30个字符:)
编辑:如果要存储在数据库中的文本长度超过65535个字符,则必须选择MEDIUMTEXT或LONGTEXT,但要小心:MEDIUMTEXT存储最大16 MB的字符串,LONGTEXT最多4 GB.如果您使用LONGTEXT并通过PHP获取数据(至少如果您使用没有store_result的mysqli),您可能会收到内存分配错误,因为PHP会尝试分配4 GB内存以确保整个字符串可以缓冲.这可能也发生在除PHP以外的其他语言中.
但是,在将数据存储到数据库之前,您应该始终检查输入(它是否太长?它是否包含奇怪的代码?).
注意:对于这两种类型,所需的磁盘空间仅取决于存储的字符串的长度,而不取决于最大长度.
例如.如果使用charset latin1并将文本“Test”存储在VARCHAR(30),VARCHAR(100)和TINYTEXT中,则它总是需要5个字节(1个字节用于存储字符串的长度,1个字节用于每个字符).如果将相同的文本存储在VARCHAR(2000)或TEXT列中,它也需要相同的空间,但在这种情况下,它将是6个字节(2个字节用于存储字符串长度,1个字节用于每个字符).
欲了解更多信息,请查看documentation.
最后,我想添加一个通知,TEXT和VARCHAR都是可变长度数据类型,因此它们最有可能最小化存储数据所需的空间.但这需要权衡性能.如果您需要更好的性能,则必须使用像CHAR这样的固定长度类型.您可以阅读有关此here的更多信息.
内容总结
以上是互联网集市为您收集整理的mysql中VARCHAR和TEXT之间的区别全部内容,希望文章能够帮你解决mysql中VARCHAR和TEXT之间的区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。