决定我是否应拆分表

时间:2009-08-24 16:19:53

标签: .net sql design-patterns database-design

我正在构建一个多语言网站

我有一个描述表,其中包含每个产品的描述以及一个指示语言的列。因此它为每种语言描述包含一行

现在我担心的是我在系统中有各种不同类型的产品,阅读任何产品的描述都必须通过这个表。这意味着该表的流量很大

创建多个描述表是否有益于专用于特定产品组并将该单个表的点击量分配给多个表?

这会给我带来Microsoft SQL的任何性能提升吗?

5 个答案:

答案 0 :(得分:7)

出于实际目的,没有。如果您的表格被正确编入索引,那么您应该看不出任何差异。

不要过早地优化数据库结构。

答案 1 :(得分:4)

你在谈论多少产品?因为如果它不到1000万,甚至不用这种方式来优化它。

你所说的基本上是一种分区方案。这用于非常大的数据集。除非每件物品都很大,否则不到1000万不会接近。

如果您正在做的事情是多次读取,那么很少有人会从这种分区中获得收益。

在遇到问题之前,请不要优化问题。

答案 2 :(得分:0)

我建议检查这两件事:

  • 您的表格索引是否正确?如果没有,请将其编入索引。
  • 您目前是否看到了性能问题(如果其索引正确)?

如果您没有特别注意性能问题,我不会费心改变您的结构。对于几乎任何大小的数据库来说,这应该是完全正常的 - 可能有大量的项目,对描述表进行分区可能会有所帮助,但如果它被正确编入索引,我怀疑它会非常重要。

答案 3 :(得分:0)

对表进行规范化时,总会有轻微的性能损失。但如果正确索引表,您可能不会注意到它。如果它确实成为一个问题,那么反规范化比规范化表更容易。

所以,我建议你使用单独的表格。

答案 4 :(得分:0)

同意 - 我更愿意解决实际问题。

如果您的应用程序具有足够的模块化,并且您的数据访问层结构正确,那么以后拆分应该不会有问题。如果您正在使用存储过程,视图等从应用程序中抽象出基础表结构,那么以后执行这种优化应该对您的源产生最小的影响。