2012-06-11 112 views
1

我目前有一個網站打7個訪問數據庫,我迫切需要移動到SQL Server。 7分貝設計尖叫得很快,但由於多種原因顯然很差。SQL Server 2012表列和性能

在7個數據庫中,我共有超過375個獨特的數據字段,幾乎所有數據都被填充 - 少於2%是空值。由於缺少幾個鍵,所以7中沒有重複數據,所以標準化可能不是問題。我想保持桌子小,所以它會很快。這7個表格都有相同數量的記錄,其數量是325,000,最多可以有大約400,000。

當移動到SQL Server時,我應該保持7個唯一的表或合併爲1?我的理解(儘管是有限的)是因爲我需要在存儲過程中非常嚴謹地回覆我需要的列。鑑於類似的問題種類繁多,我仍然從未就最佳方法達成「共識」。

謝謝。

+0

7個表中的每個表的模式是否相同? –

+0

「我想讓桌子變小,所以速度會很快。」呃? –

+0

不知道如何回答模式問題。數據是銀行數據,因此一個數據庫包含資產負債表,另一個貸款數據,另一個損益表等。所有數據都由唯一的銀行ID綁定在一起。沒有重複,也沒有很多的空值。 –

回答

2

這取決於您的訪問模式。你是否經常需要一次訪問多個分區的數據?那麼你應該把它們結合起來。

無論如何,當你只有一個表(沒有一對一連接)時,開發可能會更容易。如果沒有特別的理由將它們分開,將它們合併。

注意:我認爲SQL Server中有一個列限制。

您可以通過創建索引來公開列的子集。每個索引都將在ID列上設置爲任意子列作爲「包含」列。 這會將選擇留給優化器。它會選擇最好的方式。它也可以在索引之間加入,這樣你就可以完全勝利。

建議:將表格合併爲一個表格,併爲您以前的每個表格創建一個索引。

+0

感謝USR,我感謝你的時間。我相信你在極限上是正確的(1024)。我主要關注的不是簡單的開發,而是存儲過程將數據帶回的速度。 –

+0

好的,從目標開始,您的決定取決於您的訪問模式。 – usr

+0

我意識到這聽起來完全天真,但「訪問模式」是什麼意思?我將用70多個存儲過程觸及所有不同的列(字段)。一個SP可能會擊中A和B&C列,而另一個會擊中D&E. –