MySQl中的char varchar text
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQl中的char varchar text,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1574字,纯文字阅读大概需要3分钟。
内容图文
![MySQl中的char varchar text](/upload/InfoBanner/zyjiaocheng/518/9400f999c80e4b4d818031852623b99b.jpg)
注意:
虽然text字段会把超过768字节的大部分数据溢出存放到硬盘其他空间,看上去是会更加增加磁盘压力.但从处理形态上来讲varchar大于768字节后,实质上存储和text差别不是太大了.因为超长的varchar也是会用到溢出存储,读取该行也是要去读硬盘然后加载到内存,基本认为是一样的。
另外从8000byte这个点说明一下,mysql的innodb data page默认一个数据页是16K,要存两行数据,所以对于varcahr, text如果一行数据不超过8000byte ,overflow不会存到别的page中。
----------------------------------------
差异点:
text字段,MySQL不允许有默认值。建立索引必须给出前缀索引长度.
varchar允许有默认值,对索引长度没限制,
注意:
InnoDB引擎单一字段索引的默认长度最大为767字节,myisam为1000字节.例如字符编码是utf8,那么varchar的索引最大长度是256个字符.超出限制会导致索引创建不成功,转而需要创建前缀索引.设置innodb_large_prefix=1可以增大限制,允许索引使用动态压缩,但是表的row_format必须是compressed或者dynamic.可以使索引列长度大于767bytes,但是总长度不能大于3072
bytes.
----------------------------------------
总结:
根据存储的实现:可以考虑用varchar替代text,因为varchar存储更弹性,存储数据少的话性能更高
如果需要非空的默认值,就必须使用varchar
如果存储的数据大于64K,就必须使用到mediumtext , longtext,因为varchar已经存不下了
如果varchar(255+)之后,和text在存储机制是一样的,性能也相差无几
需要特别注意varchar(255)不只是255byte ,实质上有可能占用的更多。
MySQl中的char varchar text
标签:有关 char 溢出 sql表中 ref 多个 获取数据 page 注意
本文系统来源:https://www.cnblogs.com/the-wang/p/12092551.html
内容总结
以上是互联网集市为您收集整理的MySQl中的char varchar text全部内容,希望文章能够帮你解决MySQl中的char varchar text所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。