MySQL数据库结构

时间:2013-04-17 01:57:46

标签: mysql database

我将有一个包含几百万个条目的表格,我一直想知道创建的不仅仅是这一个表是否更聪明,即使它们都具有相同的结构?它会节省资源,最终会更有效吗?

这是我特别关注的问题,因为我计划创建一个小型搜索引擎,为大约3.000.000个站点编制索引,每个站点将有大约30个被索引的单词。这是我现在的结构

site
--id
--url

word
--id
--word

appearances
--site_id
--word_id
--score

我应该保留这种结构吗?或者我应该为A单词,B单词,C单词等创建表格?与外观表相同

2 个答案:

答案 0 :(得分:0)

在较小的表上选择查询会更快。您希望将必须排序的索引放入系统内存中以获得更好的性能 更重要的是,不应定义表以保存某种类型的数据,而是定义相关数据的集合。因此,如果您存储的数据存在逻辑差异,则可能应将它们分成不同的表格。

(不完全)

优点:

  • 加快数据访问速度

  • 更容易复制或备份

缺点:

  • 无法轻松比较来自不同表格的数据。

    • 需要使用联合和联接查询来比较各个表

如果您不关心数据库的某些延迟,它应该能够在几百万条记录中处理这个问题,而不会有太多麻烦。

答案 1 :(得分:0)

以下是一些问题要问自己:

  • 记录是否全部相关?有没有办法将它们干净地分成不同的,不重叠的群体?这些群体是否定义明确,或可能会发生变化?
  • 保持最佳写入速度比关于数据访问的简单性更令人担忧吗?
  • 有没有办法将记录分成不同的类别?
  • 复制是一个问题吗?冗余?
  • 您是否担心交易安全?
  • 如果初始架构错误,是否可以在以后重新构建数据?

有很多方法可以解决这个问题,但在你知道你正在使用的参数之前,很难说。

通常,第一步是收集大量真实数据,或者至少模拟与真实数据相当类似的足够数据,使其在结构上相同。然后使用测试数据尝试不同的存储和检索方法。

没有任何测试数据,你只是在黑暗中刺伤