Sql server 主桌上有几百个,小桌上有几个
我想知道哪种方法更适合设计数据库 我目前有一个大表(每行97列),其中引用了我可以使用的查找表Sql server 主桌上有几百个,小桌上有几个,sql-server,database,performance,database-design,Sql Server,Database,Performance,Database Design,我想知道哪种方法更适合设计数据库 我目前有一个大表(每行97列),其中引用了我可以使用的查找表 将一些列分组到较小的表中,并将它们添加到引用整行的关键列中,这对性能不是更好吗?将相关列分组到不同的表中会更好。这将提高数据库的性能以及程序员的易用性。您应该首先尝试查找列之间的所有不同关系,然后尝试将所有内容分解为表,同时记住这些关系(使用主键、分叉键、引用等)。尝试创建一个这样的图表,并从中获取它 如果将表拆分为多个部分,则需要额外的联接才能获得一行中的所有列,这将花费您的时间 97列其实并不多—
将一些列分组到较小的表中,并将它们添加到引用整行的关键列中,这对性能不是更好吗?将相关列分组到不同的表中会更好。这将提高数据库的性能以及程序员的易用性。您应该首先尝试查找列之间的所有不同关系,然后尝试将所有内容分解为表,同时记住这些关系(使用主键、分叉键、引用等)。尝试创建一个这样的图表,并从中获取它 如果将表拆分为多个部分,则需要额外的联接才能获得一行中的所有列,这将花费您的时间 97列其实并不多——我已经看过超过100列了 这完全取决于数据的使用方式—如果您的行始终只有97列,并且需要97列—那么将这些列拆分为不同的表几乎毫无意义 如果:
- 您可以将一些“大”列(如
,XML
等)移动到一个单独的表中,如果您不总是需要这些列的话->在这种情况下,您的“基本”行会变小,并且基本表的性能会更好-只要您不需要那些超大的列VARCHAR(MAX)
- 您可以将某些列移到不总是存在的单独表中,例如,列可能是“可选”的,并且仅存在于例如20%的行中-在这种情况下,您可以为不需要这些列的其余80%的情况节省一些处理