MySQL/Rails性能:一个表,多行与多表,少行?

Ole*_*ann 1 mysql performance ruby-on-rails single-table-inheritance

在我的Rails应用程序中,我有几个处理资产的模型(附件,图片,徽标等).我正在使用attachment_fu,到目前为止,我有3个不同的表用于在MySQL数据库中存储信息.

我想知道如果我使用STI并将所有信息放在一个表中,使用类型列并具有不同的继承类,它是否会对性能产生影响.它会更干燥,更容易维护,因为它们共享许多属性和特征.

但更快的是什么?每个表有多个表,少行或只有一个有很多行的表?或者没有任何区别?我将不得不每秒处理大量信息和许多查询.

感谢您的意见!

tpd*_*pdi 6

许多表和更少的行可能更快.

这不是你应该这样做的原因:你的数据库应该为你的问题域建模.一个表是许多实体类型的不良模型.因此,您最终会编写大量代码来查找该表的子集,该子集代表您当前关注的实体类型.

定期的,可接受的,干净的数据库和前端客户端代码将无法正常工作,因为您的单表是一切事物,而不是任何事物.

它更慢,更脆弱,会使你的代码遍布你的应用程序,并使一个糟糕的模型.

当所有事物在您的问题域中具有完全相同的属性相同(或可能是Liskov可替代)语义时才这样做.

否则,甚至不要尝试这样做.

或者,如果你这样做,请问为什么这比使用一个大的Map/hash表/关联数组来保存应用程序中的所有实体(以及许多函数,其中大多数重复,剪切和粘贴,并且过时,这样做)更好switch用于确定每个实体的实际类型的案例或RTTI).