gpt4 book ai didi

mysql - 对于 MySQL 中的 innodb 表,速度更快 : varchar(255) or tinytext?

转载 作者:可可西里 更新时间:2023-11-01 06:37:05 24 4
gpt4 key购买 nike

我正在优化 MySQL 中的一些 innodb 表,因此我运行了 procedure analsye() 以查看建议是什么。

对于之前设置为 varchar(255) 的所有字段,结果建议使用 tinytext 而不是 varchar(255)

使用 tinytext 是否有性能提升?我在这里只关心速度,而不关心大小。

最佳答案

如果有人告诉您 TINYTEXT 是以 VARCHAR 以外的其他方式存储的,请不要相信。

实际区别是:

  • TINYTEXT 和其他 TEXT 字段与内存中的行分开存储在 MySQL 堆中,而 VARCHAR() 字段加起来达到 64k 限制(因此您可以在 TINYTEXT 中拥有超过 64k,而您不会使用变量)。

  • TINYTEXT 和其他“blob-like”字段将强制 SQL 层 (MySQL) 在使用时使用磁盘上的临时表,而 VARCHAR 仍将“在内存中”排序(尽管将转换为CHAR 表示全宽)。

  • InnoDB 在内部并不关心它是 tinytext 还是 varchar。验证起来很简单,建两张表,一张是VARCHAR(255),一张是TINYINT,都插入一条记录。它们都将占用单个 16k 页面 - 而如果使用溢出页面,TINYTEXT 表在“SHOW TABLE STATUS”中应显示为至少占用 32k。

我通常更喜欢 VARCHAR(255) - 它们不会为单行造成太多堆碎片,并且可以在 MySQL 内存中被视为单个 64k 对象。在 InnoDB 上,大小差异可以忽略不计。

关于mysql - 对于 MySQL 中的 innodb 表,速度更快 : varchar(255) or tinytext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com