2012-01-30 27 views
0

我有一個包含大約100,000行的表的SQL Server 2008數據庫,我已經設置了所有正確的索引和主鍵以及全文搜索並確保它的微調。在本地SQL Server上快速搜索,但在主機上搜索速度慢SQL Server

我創建了一個存儲過程,用於在表中搜索nvarchar列,SP很長並且有多個select/insert語句。

現在,當我在我的本地SQL Server上運行的SP,我得到的結果在一秒鐘,然後我備份的數據庫,並恢復到另一臺機器上,並嘗試同樣的搜索,我在一秒鐘內得到它。

我的問題是,當我創建我的主機數據庫共享SQL Server和從我的SQL Server導入所有數據和運行搜索,我得到的結果在7秒內!儘管我確保我有相同的索引和主鍵和FTS工作。

我的數據庫在主機SQL服務器的唯一區別是,我使用腳本創建了架構,然後使用導入/導出嚮導導入了所有數據,因此要檢查這是什麼導致此問題,我創建了一個新的數據庫在我的機器上,並使用嚮導導入數據,我在3秒內得到了搜索結果!

我查了SP的執行計劃中的主機SQL服務器上的數據庫,發現一個索引掃描正在49%的成本,而在我的機器上是0%

能有人請指出爲什麼這是怎麼回事?

謝謝。

編輯:

現在,當我運行的執行計劃兩個服務器我得到完全相同的計劃和成本,但仍對速度差異巨大(即1秒和7秒)。

+0

你如何調用共享主機上的存儲過程?來自SQL Management Studio還是來自共享主機上的網頁? – Rob 2012-01-30 07:03:06

+0

你可以發佈查詢嗎?如果您的本地SQL和Prod服務器都在進行表掃描,那麼您的索引可能不是100%。 – StuartLC 2012-01-30 07:03:09

+0

我正在從SQL Management Studio調用存儲過程並傳遞搜索查詢。有沒有辦法檢查表索引是否有問題? – AmjadoV 2012-01-30 07:11:21

回答

0

雖然我沒有解決SQL Server中的奇怪行爲,但我最終用全文搜索取代了這個存儲過程,並且它給出了更快的結果。