一张桌来统治它们,还是一千个小?

时间:2015-11-17 12:06:31

标签: mysql database database-design

我的mySQL数据库中有10k用户,我需要存储最近500个事件的每个用户。 请告诉我,我应该如何设计我的数据库?每个用户都有一个MegaEventsTable或专用表?
许多小桌子的优点:
  - 我可以从500个条目中快速选择50个类型的事件,而不是从500 * 10k个条目中选择   - 它更快获得前500个条目,并杀死该用户的表中的所有其他条目
  - 我可以在将来的某个时间对我的条目数据库进行分片 反政府:
  - 我觉得10k表是可怕的想法(如果有100K会怎样)

1 个答案:

答案 0 :(得分:4)

几乎不存在每个用户应该有一个表的情况。原因很多。以下是一些:

  • 对于小型表而言,MySQL的效率低​​于使用较大表的MySQL。由于页面部分填充,较小的表将占用更多空间。
  • 您不能将userId用作外键引用,因为它引用了多个表。
  • 您无法轻松更改Users表的结构。你必须改变数千个。
  • 您可以使用索引和分区来提高查询速度。
  • 数据库旨在处理大量数据,10,000行不是大量数据。