这可能是一个愚蠢的问题。SQL Server表设计建议
SQL Server 2008 R2的一些效率建议,尽管这些服务器将在未来几个月内升级到2014年。我正在创建3个表格。
t1
有许多不同类型的列和一个身份数字ID是主键。我预计这张桌子可以进入1000个行的低位。t2
与t1具有一对多的关系。它的主键将是一个t2 ID和t1 ID的组合。 t2数字ID将由前端应用程序发送,并且每个t1 ID都是唯一的。我预计这张桌子可以达到50000多排。除了这两个ID之外,它将包含一些不同长度的varchar列。t3
与t2具有一对多的关系。它的主键可以是t3 ID,t1 ID和t2 ID的组合。 t3数字ID将再次由前端应用程序发送,并且对于每个t2 ID将是唯一的。我预计这张桌子会达到几百万行。除了这3个ID之外,它将包含少量的日期或数字列。
我的问题是T2内应该我建立标识列,其T3将指基本上意味着T3的主键将是2列而不是3,即T3 ID和从时刻t2的标识列。这会更有效率吗? t2中的这个标识列是否应该编入索引?帮助加入?
我应该做其他事吗?
您最常执行哪种搜索?你会使用't1'还是't2'键搜索't3'还是会使用来自其他字段的数据?您的答案可能会使代理或自然键成为更好的选择。 – Tony
在** t2 **和** t3 **中,不太可能会独立执行任何搜索,虽然这可能会在将来出现,尽管我怀疑它。对这些表的查询将由连接到** t1 **驱动。绝大多数日间搜索将用于1个t1记录,并且对于该t1个ID以及对于那些t1 | t2个ID在t3中的任何内容。 – Darybrain