具有许多字段的表的性能影响

时间:2011-09-07 23:28:31

标签: ruby-on-rails ruby-on-rails-3

我有一张目前在40个字段的表格。其能力的显着扩展现在看起来更像是100个领域。

拥有包含更多字段的表有什么数据库和Rails性能影响?我对关系的理解是,他们不会在绝对必要之前加载数据,但会有更多的信息减慢,例如,这些记录的过滤索引(仅显示主要的8-10个字段)?

我专门讨论添加的字段与我的任何报告或大多数查询无关 - 它们只是存储后端使用的数据。

规范化在这里不是问题(例如,没有像field1field2,......这样的字段。我知道在以定性方式提出时很难回答这些问题,但是在这个表中构建这60个字段可能更好吗,还是应该为它们创建一个单独的1-1表?

2 个答案:

答案 0 :(得分:0)

拥有单个表并不是什么大问题,并且在查询时更容易。因此,如果相关,则无需拆分。

但是,您应该只在查看中查询所需内容,因此请使用ActiveRecord的{​​{1}}:doc here

答案 1 :(得分:0)

是的,拥有大量字段会降低对表的访问速度,但是,对于平均数据大小而言,这通常不够明显。大多数SQL数据库逐行排列表,因此在磁盘上,首先存储第1行的所有40个字段,然后存储第2行的所有40个字段,依此类推。这意味着,如果您只对检索前两个字段感兴趣,您仍然会读取所有其他38个字段,然后跳转到匹配的下一行。如果您只有几个匹配的行,这不是一个大问题,但如果您有许多也是连续的匹配,则可能是这样。

那就是说,我仍然会对一个有40个字段的表进行大量建议,除非有很好的理由这样做(你可能会这样做,但你会给出一些细节来回答这个问题)。通常,拥有那么多字段表示使用了一些替代设计。绝对地,如果我上面写的内容开始成为问题,你应该根据访问模式排序字段(因此,如果通常一起访问字段1-10和20,24,25,30,则将这些组放入单独的表中)。