2011-08-14 96 views
1

我正在爲房地產公司工作,我們即將開發與C#的新版本的Windows應用程序。有關數據庫設計的問題

這是目前的形勢摘要:

我們GOT 4萬人次的紀錄,並不斷增加,我們使用SQL Server 2005這些記錄在一個表中存儲與52列。幾乎所有的最終用戶在每次搜索時至少使用30至40列。

我知道這不是標準設計,但我已經嘗試了很多方案, 我已經將這52列分割到其他表中,並將主題之間的關係分開,但使用一個表時性能仍然更好即使沒有主鍵!)我已經添加了索引,但將索引添加到所有列是不合邏輯的。

我們還有其他的限制,用戶硬件,其中很多還是得到了奔騰II。

另一方面,我們得到了Google桌面搜索GDS。我已經在他們的電腦上測試過這個應用程序,性能還是不錯的。

SQL服務器和GDS引擎有什麼區別?

是否可以使用GDS之類的引擎來存儲我的數據?這些存儲的名稱是什麼?

+0

你可以給你的排序表和一些查詢的例子的文本字段的mentionned FTS?我知道你不能真的只發布你的模式,但如果我們有辦法瞭解當前的數據是如何安排和搜索的,我敢打賭,你可以得到一些更實際的幫助,做一張大桌子。 – shelleybutterfly

回答

1

這真的取決於你如何應用你的索引。此外,您可以擁有一套用於應用程序的表格和一套用於報告的表格。通過這種方式,您可以提高報告的效果並保持數據的正確性。因此,每當您獲得關係數據結構的更新時,您都有一個將數據轉移到數據庫的過程,這對於查詢來說更快。

+0

Tomas,我沒有得到圖片,你的意思是我必須在一個數據庫中創建重複數據,一組(所以我必須使用一些表來存儲而不是一個表)用於報告和設置爲使用應用程序? – Mironline

+0

是的,那是對的。或者你可以在你的數據庫中使用視圖,但我不確定它們在MSSQL中是否更快。但是,使用兩套表(或兩個數據庫),其中關係人將確保您的應用程序數據具有正確的狀態,而非正規化的應用程序數據將提高查詢性能。 –

2

是否可以使用GDS之類的引擎來存儲我的數據?這些存儲的名稱是什麼?

是的,這些廣泛地被稱爲NoSQL,並且有幾十個專門用於非關係數據存儲的不同「數據庫」。

話雖如此,在更大的方案400萬記錄甚至不是很多,這幾乎肯定是你的數據庫的設計在這裏是錯誤的。很少有單個表設計最快的情況,像SQL Server這樣的引擎非常擅長處理關係數據。看看this one這樣的討論,在做出任何決定之前,可能會多學習一些關於數據庫設計和優化的內容。

0

GDS和SQL並不相同。但是,SQL Server具有(作爲可選組件)稱爲Full-Text Search的功能,可以幫助實現您所需的功能。

一般情況下,我想,下面可能是一個很好的解決方案:

  • 規範化數據庫 - 如果你沒有得到一個標準化的數據庫更好的性能,那麼你肯定很沒有正確的主鍵和外鍵集。
  • 使用上需要被搜索