gpt4 book ai didi

mysql - 始终对 varchar 字段使用 255 个字符会降低性能?

转载 作者:行者123 更新时间:2023-12-01 00:10:32 25 4
gpt4 key购买 nike

我通常对 varchar 字段使用最大可能的字符数,所以在大多数情况下我设置 255 但只在列中使用 16 个字符...

这会降低我的数据库的性能吗?

最佳答案

在存储方面,VARCHAR(255) 列将占用 1 个字节来存储实际值的长度加上存储实际值所需的字节数。

对于 latin1 VARCHAR(255) 列,最多为 256 个字节。对于 UTF8 列,其中每个字符最多可占用 3 个字节(尽管很少),最大大小为 766 字节。正如我们所知,InnoDB 中单个列的最大索引长度(以字节为单位)为 767 字节,因此可能有人将 255 声明为最大支持列长度的原因。

因此,再次说明,在存储值时,它只占用实际需要的空间。

但是,如果列被索引,索引会自动分配最大可能的大小,以便索引中的每个节点都有足够的空间来存储任何可能的值。搜索索引时,MySQL 一次加载特定字节大小块中的节点。大节点意味着每次读取的节点更少,这意味着搜索索引需要更长的时间。

在将值存储在临时表中进行排序时,MySQL 也会使用最大大小。

因此,即使您不使用索引,但执行无法使用索引进行排序的查询,您的性能也会受到影响。

因此,如果性能是您的目标,将任何 VARCHAR 列设置为 255 个字符不应该是一个经验法则。相反,您应该使用所需的最低限度。

可能有一些极端情况,您宁愿每天都在性能上受到影响,这样您就不必完全锁定表来增加列的大小,但我认为这不是常态。

一个可能的异常(exception)是,如果您在两个表之间的 VARCHAR 列上进行联接。 MySQL says :

MySQL can use indexes on columns more efficiently if they are declared as the same type and size.

在这种情况下,您可以使用两者之间的最大尺寸。

关于mysql - 始终对 varchar 字段使用 255 个字符会降低性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21686235/

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