列数是否影响MYSQL速度?

5cnsuln7  于 2023-04-19  发布在  Mysql
关注(0)|答案(3)|浏览(164)

我有一个表。我只需要运行一种类型的查询:在第1列中找到一个给定的unique,然后得到前3列。
现在,如果我在表中添加额外的几列来存储数据,会对速度产生多大的影响呢?我知道我应该使用一个单独的表,但是让我们假设我只能有一个表,所以唯一的方法就是在最后添加一些列。
那么,如果我在末尾添加一些列,比如10个,每个30个varchar,这会降低第一句中给出的任何查询的速度吗?如果是这样,与没有额外冗余的列相比,你认为会降低多少?

monwx1rj

monwx1rj1#

是的,额外的数据可能会减慢查询速度,因为这意味着页面中可以容纳的行更少,这意味着要读取一定数量的行需要更多的磁盘访问,并且可以在内存中缓存的行更少。
很难预测导致速度降低的确切因素。它可以忽略不计,但如果你接近能够在内存中缓存整个表与不能缓存整个表之间的界限,那么一些额外的列可能会对执行速度产生很大的影响。从内存中的缓存或从磁盘中获取一行所需的时间差异是几个数量级。
如果添加covering index,额外的列应该会有较小的影响,因为查询可以使用相对较窄的索引,而不需要引用更宽的主表。

8hhllhi2

8hhllhi22#

我不明白“我知道我应该使用一个单独的表”这一点。你所描述的是你有一个DB的原因,将一个键与一些相关的数据相关联。换个Angular 看,如果你没有键,你怎么检索这些信息?
要回答你的问题,知道性能会受到什么影响的唯一方法是经验测试(尽管Mark的答案在我之前发布,是速度的许多因素之一)。

toiithl6

toiithl63#

这在一定程度上取决于记录中已经有多少数据。通常情况下,差异介于几乎没有数据和没有数据之间。
不同之处在于需要从磁盘加载多少数据才能获得数据。额外的列可能意味着每页中的记录空间更少,但也可能每页中恰好有足够的空间容纳大部分额外数据,因此需要的额外块很少。这取决于当前数据在页面中排列得有多好。

相关问题