数据库速度优化:很少的表有很多行,或者很多表有很少的行?

Str*_*rae 4 postgresql performance database-design

我有一个很大的疑问.

让我们以一个公司订单的数据库为例.

假设这家公司每月大约生产2000个订单,那么,每年大约24K订单,他们不想删除任何订单,即使它是5年(嘿,这是一个例子,数字并不意味着任何东西).

在具有良好的数据库查询速度的意义上,它最好只有一个表,或者每年有一个更快?

我的想法是每年为订单创建一个新表,称为orders_2008,orders_2009等.

加速数据库查询可能是一个好主意吗?

通常使用的数据是当前年份的数据,因此行数越少越好.显然,当我同时搜索所有订单表时,这会产生问题,因为我是否应该运行一些复杂的UNION ..但这种情况在正常活动中非常罕见.

我认为最好有一个应用程序,95%的查询是快速的,剩下的有点慢,而不是一个总是很慢的应用程序.

我的实际数据库是130个表,我的应用程序的新版本应该有大约200-220个表...其中约40%将每年复制.

有什么建议吗?

编辑:RDBMS可能是Postgresql,也许(希望不是)Mysql

S.L*_*ott 12

较小的表更快.期.

如果您有很少使用的历史记录,那么将历史记录放入其他表格会更快.

这就是数据仓库的意义 - 将历史数据中的操作数据分开.

您可以运行定期提取从操作和加载到历史.保留所有数据,它只是隔离.


And*_*ter 7

在担心查询速度之前,请考虑成本.

如果将代码拆分为单独的代码,则必须具有处理它的代码.你写的每一段代码都有可能出错.你要求你的代码是错误的,而代价是一些无法测量和想象的性能获胜.

还要考虑机器时间与程序员时间的成本.