在没有动态增加的可行性。数据库中的表和行

时间:2011-06-21 05:13:52

标签: php mysql database database-design phpmyadmin

  

可能重复:
  Insert many rows to one table OR insert rows separately to many table?

哪个更好的100个表包含10,000行或1,000个表包含1,000行?

上述问题只是一个基础。如果没有以下条件,它就没有完成。

条件:

  • R1-否。在第一种情况下的行。
  • R2-否。在第二种情况下的行。
  • T1-否。第一种情况下的表格。
  • T2-否。第二种情况下的表格。
  • R1和R2动态(急剧增加),超出给定限制的是样本。
  • T1是常数。
  • T2动态增加(与r1成比例)
  • 不关心表管理和数据库的简单性。
  • 仅对最短查询执行时间和最短服务器加载时间感兴趣。
  • 数据库 - MySql
  • 语言 - PHP

问题:

  • 查询执行时间和服务器加载时间(最小RAM使用率)。
  • 没有动态增加的可行性。数据库中的表格。
  • 没有动态增加的可行性。表中的行数。

除了答案之外,上面的数据库技巧也被邀请了。

2 个答案:

答案 0 :(得分:1)

您的问题有很多,而且有助于获得更多信息,但以下是我的一些想法:

  • 与数据库接口的语言通常不是一个因素 - 你应该尽可能地努力限制所需的连接和消息的数量(即使用连接而不是与PHP通信两次),但是因为好的设计正在做尽可能多的数据选择/排序在DB端进行(因为that's what they're for
  • 如果所有的表都具有相同的结构,那么在处理大量选择时你通常会更好地使用一个表 - UNION,至少在我的经验中,通常是一个缓慢的野兽。
  • 如果您真的担心一次只访问一小部分数据,那么我建议将所有内容保存在更少的表中并创建视图。
  • Don't care about table management and simplicity of database是一个糟糕的政策。编程的所有最佳实践都适用于数据库设计。请记住,一个不知道你在想什么的人会继承这个项目,那可能就是你。

就我个人而言,我认为我们中的很多人都有使用1M线表的经验,而且我知道我不会想要将其作为一系列UNION来处理, ORJOIN。至少,不是在所有相同的桌面设计时。

答案 1 :(得分:1)

由于一百万行是一个很小的小表,为什么你会考虑把它分成100个表或1000个表?