数据库设计用户表分割或单个

时间:2013-03-16 09:13:17

标签: sql database-design

我只想看看别人对这个主题的看法。我有一个项目,每个用户都有相当多的独特信息。现在,鉴于没有冗余并且有大量用户 - 将数据分成更小的表会使它更快吗?

我确实尝试过1000个查询,其中一个有87列,另一个只有登录信息单独存储。在我得到1372ms,其他879ms;看起来似乎更快,但有可能有人比我有更多的经验,可以对此提出自己的观点?

1 个答案:

答案 0 :(得分:4)

在你的测试中,如果你使用“SELECT *”查询大小表,要返回所有列,那么是的,当然较大的表需要更长的时间,因为它必须返回更多的数据。但是,在生产应用程序中,应该定位应用程序中的查询,仅返回所需的列。

如果每个表具有相同的索引和正在过滤的数据,并且每个表都返回相同的选定列,则结果集应该可能在大致相同的时间内返回。但是,我应该补充一点,在考虑性能测试时,时间可能会非常误导。数据库服务器有许多因素不断变化,与您正在运行的查询无关,但绝对会影响其运行时间。而不是将时间作为衡量标准,尝试查看逻辑读数。

至于你的设计问题,无论哪种方式在技术上都有效。但是,您可能需要考虑需要访问特定数据的频率,以便帮助开发团队的其他人员。如果您有80%的时间都有20%的列被查询,您可能需要考虑在自己的表中查找这些列。这应该有助于避免新开发人员花费大量时间让您的团队不必筛选大量通常不重要的数据,以确定他们想要查询的内容。

此外,从物理设计的角度来看,如果成本问题,您可以将需要频繁访问的20%表放在性能较高的磁盘驱动器上,将80%的数据放在性能较低的磁盘驱动器上。