2015-11-17 15 views
-1

我的mySQL数据库中有10k个用户,每个用户需要存储最后500个事件。 请指教我,我应该如何设计我的数据库?一个MegaEventsTable或每个用户的专用表?
许多小表的优点:
- 例如,我可以从500个条目中快速选择50个事件,而不是从500 * 10k个条目。
- 它是更快获得最高500项,并杀死在表中的所有其他条目该用户
- 我可以分片我的条目的数据库在未来
反政府一些时间:
- 我觉得10K表格是可怕的想法(以及如果将有100K)
一张桌子来统治他们全部,或千人小?

+0

投票转移到DBA.SE,它已交叉发布:http://dba.stackexchange.com/questions/121326/one-table-to-rule-them-all-or-thousand - 更小 –

+0

而请,不要这样做(在许多网站发布相同的问题)。在一个网站上有一个问题就足够了。 –

+0

@ypercube对不起,这里的人比在DBA上的人多。我应该在DBA上删除我的帖子吗? – Asprelis

回答

4

几乎没有情况下,你应该为每个用户有一张桌子。有许多原因。这里有一些:

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