這可能是一個愚蠢的問題。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