面试提问

千万并发,数据库表如何优化,请详细描述?此时表中char和varchar区别体现在哪里?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

char 和 varchar 的要素不在于说长度问题,毕竟这是一个大家都知道的问题。 是空间问题和索引问题。char 的空间是固定的,varchar 的空间也是固定的,也就意味着 你在 varchar 里面写一个标题还是一篇文章占用的空间是一样的,所以要合理设计 char 和 varchar 。对于索引来说 char 会更友好一些,不过在 InnoDb 中 还是建议 使用 varchar 代替 char

2年前 评论
隐德莱希 (楼主) 2年前
JinBB 2年前
隐德莱希 (楼主) 2年前
讨论数量: 24

垂直分表水平分表,根据业务需求具体问题具体分析。

  • 例如用户表数量大可采取水平分表的方式,根据用户 id 进行取模分表;

  • 文章的标题详情则可以通过垂直分表优化,因为业务逻辑会先展示文章的标题和摘要,然后再次点击,根据文章 id 展示详情。

charvarchar 具体表现在长度和效率上,char 的长度是固定的,varchar是可变的。相比之下 char的效率更高。

2年前 评论
隐德莱希 (楼主) 2年前
working (作者) 2年前
隐德莱希 (楼主) 2年前

char 和 varchar 的要素不在于说长度问题,毕竟这是一个大家都知道的问题。 是空间问题和索引问题。char 的空间是固定的,varchar 的空间也是固定的,也就意味着 你在 varchar 里面写一个标题还是一篇文章占用的空间是一样的,所以要合理设计 char 和 varchar 。对于索引来说 char 会更友好一些,不过在 InnoDb 中 还是建议 使用 varchar 代替 char

2年前 评论
隐德莱希 (楼主) 2年前
JinBB 2年前
隐德莱希 (楼主) 2年前
╰ゝSakura

来卷群,手把手教你

2年前 评论
隐德莱希 (楼主) 2年前
╰ゝSakura (作者) 2年前
隐德莱希 (楼主) 2年前
╰ゝSakura (作者) 2年前
layin_gongzi556 2年前

能问问薪资吗?这问题有点牛啊!后面的char索引效率高点,长度小点。反正我都存varchar。。

2年前 评论
隐德莱希 (楼主) 2年前
working 2年前
隐德莱希 (楼主) 2年前
蔺焕然

结合存储引擎与编码格式谈。

对于固定长度的CHAR类型,缺少的字符会以0x20填充。

由于CHAR(N)中的N指的是字符个数,对于变长字符集(比如UTF-8),其实际字节长度不是定长数据。此时,InnoDB将其视为变长字符类型,在变成字符长度列表中也会记录CHAR类型字段的实际长度。因此,在使用变长字符集的情况下,CHAR和VARCHAR在存储上没有区别。

还可以结合 UTF-8 mb4 再聊一点。

2年前 评论
隐德莱希 (楼主) 2年前
jiangjun

什么公司,千万并发

2年前 评论
陈先生 2年前
隐德莱希 (楼主) 2年前
优化数据库表的方法有很多,具体取决于表的结构和使用情况。但是,通常可以从以下几个方面入手:
  • 使用合适的数据类型。例如,使用整型而不是字符串来存储数字,这样可以减少存储空间,提高查询性能。
  • 索引优化。为表中常用的字段建立索引,可以提高查询速度。但要注意,过多的索引会增加存储空间的消耗,并降低插入、更新和删除的性能。
  • 数据压缩。如果表中存储的数据量很大,可以考虑使用数据压缩技术来减少存储空间的消耗。
  • 分区。如果表中数据量非常大,可以将表按照一定的规则进行分区,每个分区存储一部分数据,这样可以提高查询性能。
在 MySQL 中,char 和 varchar 类型都是用于存储字符串的。它们的区别在于,char 类型的字段在存储时会占用固定长度的空间,而 varchar 类型的字段只会占用实际需要的空间。因此,如果你确定字段的长度不会发生变化,建议使用 char 类型,因为这样可以提高存储空间的利用效率。如果字段长度可能会发生变化,则应该使用 varchar 类型,因为这样可以节省存储空间。

例如,如果你有一个存储用户名的字段,用户名的长度可能会有所不同,这时候你可以使用 varchar 类型来存储用户名,这样只会占用实际需要的空间。

总之,在选择 char 和 varchar 类型时,应该根据实际情况来决定使用哪种类型。一般来说,如果字段长度确定且不会发生变化,则应该使用 char 类型;如果字段长度不确定或可能会发生变化,则应该使用 varchar 类型。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!