【问题标题】:Should I divide my table into multiple tables?我应该把我的桌子分成多张桌子吗?
【发布时间】:2017-04-20 18:32:05
【问题描述】:

我有一张名为questions 的表格,该表格描绘了一项民意调查。它包含 12 列:id, title,type, choice1, choice2, img1, img2, upvotes, downvotes, comments, shares, date_stamp

我很难确定是保持表格原样还是根据相似的属性将表格分成两部分。例如,可能有一个名为 questions 的表包含列:id, title, type, choice1, choice2, img1, img2, date_stamp,另一个名为 question_props 的表包含列:id, upvotes, downvotes, comments, shares

将使用所有表列,并且将使用最多的 SQL 语句将是 SELECT * FROM questions ORDER BY rand() LIMIT 10 假设表合并为一个。

根据此信息,将表拆分为两个更好还是保留为一个表?

【问题讨论】:

  • 分裂的动机是什么?如果它们之间的关系是 1:1(您的问题暗示了这一点),那么这对我来说似乎是过早的优化。您是否希望拆分时更快的查询模式?一些写并发问题?分区肯定比拆分更有意义吗?
  • @AndySavage 你能给我一个分区的例子吗?

标签: mysql performance database-design


【解决方案1】:

过早的优化。

如果您达到每秒获得数百个赞成/反对票的程度,然后您应该将表格一分为二,放置快速更新的计数器在单独的表格中。

PARTITION,我相信,不会有任何帮助。

【讨论】:

  • 感谢您的回答。我应该只将计数器(Upvotes、downvotes、shares、cmets)放在单独的表格中吗?此外,与将它们全部放在一张表中相比,这将如何提高性能?
  • 它在一定程度上减少了计数器的快速更新与其他活动之间的争用。
猜你喜欢
  • 2010-12-12
  • 1970-01-01
  • 2021-07-01
  • 2016-07-25
  • 2012-05-23
  • 2017-02-07
  • 2011-07-16
  • 2011-11-17
  • 2015-03-11
相关资源
最近更新 更多