列数会影响MYSQL速度吗?

时间:2010-12-24 22:08:17

标签: mysql

我有一张桌子。我只需要运行一种类型的查询:在第1列中找到给定的唯一,然后说出前3列。

现在,如果我在表中添加额外的几列以进行基本“数据存储”,它会对速度产生多大影响。我知道我应该使用saparate表,但我们假设我只受限于只有一个表,所以唯一的方法是在最后添加一些列。

所以,如果我添加一些列,最后说10个,每个30个varchar,这会减慢第一句中给出的任何查询吗?如果是这样的话,你认为与没有额外的还原剂但仍然存在的列相比有多少因素?

3 个答案:

答案 0 :(得分:5)

是的,额外的数据会降低查询速度,因为这意味着可以容纳更少的行进入页面,这意味着可以在内存中缓存更多磁盘访问以读取一定数量的行和更少的行。

减速的确切因素很难预测。它可以忽略不计,但是如果你接近能够在内存中缓存整个表的边界,那么额外的一些列可能会对执行速度产生很大的影响。从内存或磁盘中的缓存中获取行所花费的时间差异是几个数量级。

如果添加covering index,额外的列应该影响较小,因为查询可以使用相对较窄的索引,而无需引用更宽的主表。

答案 1 :(得分:0)

我不明白'我知道我应该使用一个单独的表'位。您所描述的是您拥有数据库的原因,即将密钥与某些相关数据相关联。再看一下,如果你没有钥匙,你怎么检索这些信息呢?

要回答你的问题,了解性能影响的唯一方法是经验性测试(尽管马克的回答,在我之前发布,是非常多的因素 - 速度因素)。

答案 2 :(得分:0)

这取决于您在记录中已有多少数据。差异通常介于几乎没有差异之间,而不是那么大。

不同之处在于需要从磁盘加载多少数据才能获取数据。额外的列可能意味着每个页面中有更少记录的空间,但是对于大多数额外数据而言,它可能在每个页面中留有足够的空间,因此几乎不需要额外的块。这取决于当前数据在页面中的排列情况。