MySQL中CHAR和VARCHAR的区别

前述

VARCHAR和CHAR是两种最主要的字符串类型。不幸的是,很难精确地解释这些值是怎么存储在磁盘和内存中的,因为这跟存储引擎的具体实现有关。下面的描述假设使用的存储引擎是InnoDB和/或者MyISAM。如果使用的不是这两种存储引擎,请参考所使用的存储引擎的文档。

先看看VARCHAR和CHAR值通常在磁盘上怎么存储。请注意,存储引擎存储CHAR或者VARCHAR值的方式在内存中和在磁盘上可能不一样,所以MySQL服务器从存储引擎读出的值可能需要转换为另一种存储格式。

VARCHAR类型

VARCHAR类型用于存储可变长字符串,是最常见的字符串数据类型。它比定长类型更节省空间,因为它仅使用必要的空间(例如,越短的字符串使用越少的空间)。有一种情况例外,如果MySQL表使用ROW_FORMAT=FIXED创建的话,每一行都会使用定长存储,这会很浪费空间。

VARCHAR需要使用1或2个额外字节记录字符串的长度:如果列的最大长度小于或等于255字节,则只使用1个字节表示,否则使用2个字节。假设采用latin1字符集,一个VARCHAR(10)的列需要11个字节的存储空间。VARCHAR(1000)的列则需要1002个字节,因为需要2个字节存储长度信息。

VARCHAR节省了存储空间,所以对性能也有帮助。但是,由于行是变长的,在UPDATE时可能使行变得比原来更长,这就导致需要做额外的工作。如果一个行占用的空间增长,并且在页内没有更多的空间可以存储,在这种情况下,不同的存储引擎的处理方式是不一样的。例如,MyISAM会将行拆成不同的片段存储,InnoDB则需要分裂页来使行可以放进页内。其他一些存储引擎也许从不在原数据位置更新数据。

VARCHAR适用情况

下面这些情况下适用VARCHAR是合适的:

字符串列的最大长度比平均长度大很多

列的更新很少,所以碎片不是问题

使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字节数进行存储

CHAR类型

CHAR类型是定长的:MySQL总是根据定义的字符串长度分配足够的空间。当存储CHAR值时,MySQL会删除所有的末尾空格。CHAR值会根据需要采用空格进行填充以方便比较。

CHAR适合存储很短的字符串,或者所有值都接近同一个长度。例如,CHAR非常适合存储密码的MD5值,因为这是一个定长的值。对于经常变更的数据,CHAR也比VARCHAR更好,因为定长的CHAR类型不容易产生碎片。对于非常短的列,CHAR比VARCHAR在存储空间上也更有效率。例如用CHAR(1)来存储只有Y和N的值,如果采用单字节字符集只需要一个字节,但是VARCHAR(1)却需要两个字节,因为还有一个记录长度的额外字节。

测试

下面通过例子来具体说明CHAR与VARCHAR行为上的不同,首先,我们创建一张只有一个CHAR(10)字段的表,并且往里面插入一些值:

CREATE TABLE char_test(    char_col CHAR(10)); INSERT INTO char_test VALUES    ('string1').    ('  string2').    ('string3  ');

当我们检索这些值的时候,会发现string3末尾的空格被截断了。

SELECT CONCAT("'", char_col, "'")FROM char_test;

执行结果:

DM建站系统律师事务所HTML5网站模板1.7 DM建站系统律师事务所HTML5网站模板1.7

DM建站系统律师事务所HTML5网站模板, DM企业建站系统。是由php+mysql开发的一套专门用于中小企业网站建设的开源cms。DM系统的理念就是组装,把模板和区块组装起来,产生不同的网站效果。可以用来快速建设一个响应式的企业网站( PC,手机,微信都可以访问)。后台操作简单,维护方便。DM企业建站系统安装步骤:第一步,先用phpmyadmin导入sql文件。 第二步:把文件放到你的本地服务器

DM建站系统律师事务所HTML5网站模板1.7 0 查看详情 DM建站系统律师事务所HTML5网站模板1.7

 微信截图_20200430110436.png

如果用VARCHAR(10)字段存储相同的值,可以得到如下结果:

CREATE TABLE varchar_test(    varchar_col VARCHAR(10)); INSERT INTO varchar_test VALUES    ('string1').    ('  string2').    ('string3  '); SELECT CONCAT("'", varchar_col, "'")FROM varchar_test;

执行结果

 微信截图_20200430110542.png

VARCHAR(5)与VARCHAR(200)的区别

我们倘若用VARCHAR(5)和VARCHAR(200)来存储’hello’,我们知道这两者的空间开销是一样的。那么我们可以让VARCHAR的长度始终保持很大吗?使用更短的列有什么优势吗?

事实证明有很大的优势。更长的列会消耗更多的内存,因为MySQL通常会分配固定大小的内存块来保存内部值。尤其是使用内存临时表进行排序或操作时会特别糟糕。在利用磁盘临时表进行排序时也同样糟糕。

所以最好的策略是只分配真正需要的空间。

总结

当我们为字符串类型的字段选取类型的时候,判断该选取VARCHAR还是CHAR,我们可以从以下几个方面来考虑:

该字段数据集的平均长度与最大长度是否相差很小,若相差很小优先考虑CHAR类型,反之,考虑VARCHAR类型。

若字段存储的是MD5后的哈希值,或一些定长的值,优先选取CHAR类型。

若字段经常需要更新,则优先考虑CHAR类型,由于CHAR类型为定长,因此不容易产生碎片。

对于字段值存储很小的信息,如性别等,优先选取CHAR类型,因为VARCHAR类型会占用额外的字节保存字符串长度信息。

总之一句话,当我们能够选取CHAR类型的时候,或者说空间消耗相对并不是影响因素的重点时,尽量选取CHAR类型,因为在其他方面,CHAR类型都有着或多或少的优势。而当空间消耗成为了很大的影响因素以后,我们则考虑使用VARCHAR类型。

推荐教程:《Mysql教程》

以上就是MySQL中CHAR和VARCHAR的区别的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1035825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 03:56:17
下一篇 2025年12月2日 03:56:48

相关推荐

  • Neo Pepe硬币:具有爆炸潜力的模因加密?

    neo pepe coin($neop)正在meme加密货币领域掀起波澜,与dogecoin、shiba inu和pepe形成差异化,其核心在于社区治理与策略性代币经济设计。 Neo Pepe Coin:具备爆发潜力的模因币? 模因币市场正在不断演进,而Neo Pepe Coin($neop)正崭露…

    2025年12月8日
    000
  • Neo Pepe硬币:模因令牌接管加密货币预售

    neo pepe coin($neop)正在成为一种独特的模因币,凭借其结构化的预售机制、强大的治理模式以及以社区为中心的理念迅速崭露头角。 在不断变化的加密货币市场中,一个全新的模因币正掀起热潮:Neo Pepe Coin($neop)。当Pepe币面临下行压力时,Neo Pepe以其创新策略和坚…

    2025年12月8日
    000
  • 德克萨斯州,比特币和财政资金:孤独的数字融资状态

    德克萨斯州因大胆接纳比特币而引发广泛关注,可能在美国各州中率先实现公共财政持有比特币的先例。这一举措将如何展开? 你好,加密爱好者们!德州正在推进一项与比特币和大量州财政资金有关的重大计划。让我们一起深入了解这项在孤星州内围绕财政部和加密货币展开的新动向。 德克萨斯州全面布局:全新战略储备诞生 州长…

    2025年12月8日
    000
  • DOGE PLANGY目标和投资:Pepe Little Pepe窃取了演出吗?

    dogecoin(doge)正处于下行趋势,而小佩佩(pepe)的上升动能却显得乏力。现在是否是时候重新考虑您的模因币投资方向了? 曾经风光无限的Dogecoin正在失去其热度,越来越多的投资者开始将目光投向其他新兴的模因币项目。小佩佩会成为下一个热点吗?我们来看看当前Dogecoin的市场状况,并…

    2025年12月8日
    000
  • RUVI AI:革命性的加密货币空间中的ROI预测

    ruvi ai是否属于如比特币和狗狗币等建立的加密货币?探索其创新方法与实际应用如何影响roi预测。 RUVI AI:在加密领域中引领ROI预测的革新力量 Ruvi AI(Ruvi)正在成为加密市场中一个潜在的重要角色,将区块链技术与人工智能融合。一些行业观察家认为,凭借其明确的发展蓝图和实用价值,…

    2025年12月8日
    000
  • Ruvi AI:这是否有能力为更大的ETH收益而做好准备吗?

    分析师热议ruvi ai(ruvi)及其惊人的roi潜力。它真能超越以太坊吗? Ruvi AI:是否具备挑战ETH的潜力? 随着加密市场持续演变,一个新晋力量正在崛起——Ruvi AI(Ruvi)。初步预测释放出可观回报信号,业内人士开始思考,以太坊能否继续保持领先?Ruvi AI会是下一个风口吗?…

    2025年12月8日
    000
  • SOL,Neo Pepe,拉力赛预测:解码加密嗡嗡声

    solana,neo pepe硬币和市场集会成为头条新闻。获取最新的见解,预测以及推动加密对话的原因。 从Solana的潜在激增到Neo Pepe硬币的兴起,加密世界一直在活动中嗡嗡作响。让我们研究最新的趋势和预测。 Solana(Sol)和Chainlink(链接):生长底漆? Solana(So…

    2025年12月8日
    000
  • Magacoin的上升:遵循2025年Shiba Inu的成长道路?

    magacoin finance正逐步引起市场关注,其发展轨迹与shiba inu早期阶段有相似之处。凭借成功的预售表现和战略性资金流入,该项目正在复刻过往爆款项目的成长模式,吸引越来越多投资者的目光。 Magacoin的崛起:是否会在2025年重演Shiba Inu之路? Magacoin Fin…

    2025年12月8日
    000
  • 在加密货币中浏览野外西部:地毯拉力,模因硬币和市场骗局

    模因币既可能带来财富,也可能隐藏着地毯骗局的高风险。本文揭示了当前的趋势以及如何识别潜在的危险信号。 加密货币市场如同过山车,尤其是当模因币进入视野时。虽然部分早期投资者获得了惊人的回报,但其背后也潜藏着地毯拉和诈骗的巨大隐患。我们一起来了解模因币现状、地毯拉的风险及如何保护自己。 模因币热潮与地毯…

    2025年12月8日
    000
  • 阻止,仲裁,filecoin:为加密的下一波绘制课程

    探索阻塞、仲裁与filecoin的动态,揭示塑造去中心化技术未来的趋势与洞察。 阻塞者、仲裁者与Filecoin:绘制加密下一阶段的发展蓝图 随着2025年中旬的到来,加密领域正迎来新一轮的活跃浪潮。BlockDAG、Arbitrum和Filecoin已不再只是项目名称,而是建立在坚实基础之上的生态…

    2025年12月8日
    000
  • 比特币的最大供应:一天的问题及其为什么重要

    比特币供应上限为何定为2100万枚? dropee每日测验深入探讨了这一核心特性及其对加密市场的重要意义。 比特币最大供应量:一个值得深思的问题 比特币为何将总量限制在2100万枚?这个问题经常被提及,尤其是在Dropee这样的平台上,作为“每日问题”来帮助用户加深理解。让我们一起探索这个数字背后的…

    2025年12月8日
    000
  • 块状,狗狗币,超流油:2025年导航加密货币景观

    探索块链新星:blockdag、狗狗币与超流体的未来潜力 加密货币的世界日新月异,令人目不暇接。让我们一起来看看BlockDag、Dogecoin和Hyproliquid的发展动向。 BlockDag:技术创新先锋 BlockDag正聚焦于现实世界的技术落地。该项目已获得巨额融资(超过3.15亿美元…

    2025年12月8日
    000
  • Ruvi AI,Dogecoin和审计令牌:导航加密嗡嗡声

    探索ruvi ai、dogecoin与经审计代币的热议话题。ruvi ai会是下一个bnb吗?dogecoin是否会迎来反弹?答案就在这里。 加密世界永不停歇,最近,它再次掀起波澜:围绕Ruvi AI、Dogecoin以及经过审计的代币讨论不断升温。让我们深入探究它们为何成为焦点,以及这对投资者意味…

    2025年12月8日
    000
  • Web3 AI预售加热:$ WAI是下一个潜力1000倍的算法吗?

    web3 ai预售表现亮眼,与algorand的defi suger及hyproliquid的价格波动形成鲜明对比,使$ wai成为web3加密领域中备受瞩目的新星。 围绕Web3 AI、Algorand(ALGO)和Hyproliquid(HYPE)的关注度持续上升。尽管Algorand展现出一定…

    2025年12月8日
    000
  • Tron Eyes公共市场,炒作目标50美元,而BlockDag IPO风格的发布会加热

    特隆(tron)正瞄准纳斯达克上市,目标价格高达50美元,同时blockdag以类似ipo的预售模式掀起市场热潮。这是否预示着加密货币的未来走向? Tron瞄准公开市场,炒作目标直指50美元,BlockDag仿照IPO启动预售 加密圈内热议不断!Tron计划登陆纳斯达克,Hyperliquid设定宏…

    2025年12月8日
    000
  • 撒哈拉代币火箭弹40389%在二元上市公告中:一个新时代?

    撒哈拉代币在binance alpha上市公告中爆涨,引发了广泛关注和热议。这是否预示着新一轮ai驱动型加密货币浪潮的来临? 撒哈拉代币暴涨40389%,因二元上市消息引爆:新时代即将开启? 随着Binance宣布将其列入Binance Alpha平台,撒哈拉代币(Sahara Token)迎来爆发…

    2025年12月8日
    000
  • Tron,Tether和Dogecoin:导航加密货币嗡嗡声

    探索tron、tether与dogecoin的最新趋势,揭示市场动态和社区讨论的关键洞察。 Tron、Tether与Dogecoin:解码加密货币热议话题 Tron、Tether和Dogecoin持续主导加密圈的热门话题。本文深入分析这些数字资产的最新发展,探讨其在加密生态系统中的角色演变与影响。 …

    2025年12月8日
    000
  • Filecoin,XRP,Blockdag:导航加密货币的变化沙子

    filecoin&xrp遭遇横向震荡,而blockdag的推荐奖励机制引发关注。本文探讨了当前趋势。 Filecoin,XRP,Blockdag:探索加密货币的动态变化 加密世界永不停歇,但目前Filecoin和XRP正处于盘整阶段。与此同时,BlockDag正以一种创新的用户激励方式搅动市场,并专…

    2025年12月8日
    000
  • XRP ETF动量:Teucrium的AUM增长信号信号看涨未来

    xrp etf批准前景显著升温,teucrium推出的2倍杠杆xrp etf已吸纳1.22亿美元资产管理规模,向华尔街释放出强烈的机构关注度信号。 XRP ETF势头强劲:Teucrium AUM跃升预示积极前景 围绕潜在XRP ETF的讨论愈发热烈,Teucrium推出的两倍杠杆XRP ETF(X…

    2025年12月8日
    000
  • Dogecoin,Shiba Inu和Meme Coin Mania:下一步是什么?

    dogecoin和shiba inu还值得继续关注吗?深入了解这些模因币的最新动向、面临的挑战以及未来潜力。 Dogecoin、Shiba Inu与Meme Coin热潮:接下来会发生什么? 曾经风靡加密世界的Dogecoin和Shiba Inu等模因币,如今是否还能维持热度?在市场逐渐收紧的情况下…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信