2012-12-16 86 views
0

我有一個選擇查詢與100 +列從15個表和超過100000行。這個查詢的執行時間大約是15分鐘。 現在,當我將列數減少到50並且註釋掉相應的表時。 按我的理解,新的查詢時間應少於15周的MNT但現在的執行時間增加到4個小時:(。SQL查詢需要更多的時間,當列減少

請建議。

+1

較少的列應該不重要(很多),但查詢的結構和相應的索引如何。你可以發佈帶有幾列的查詢,以及查詢的所有JOIN標準/ WHERE條件。這將爲您提供最佳的解決方案。 – DRapp

+0

如果您想要答案,請在您的問題中添加更多信息。 –

回答

1

沒有更詳細的信息,我建議重建所涉及的所有表的索引在查詢(和更新任何剩餘列統計):

DBCC DBREINDEX('MyTable') 
go 

UPDATE STATISTICS MyTable WITH FULLSCAN, COLUMNS 
go 

[常見的警告/關於在生產服務器上運行的告誡:]

+0

但是舊的查詢仍然花費較少的時間。 – user1907557

+0

沒有更詳細的信息,我建議你重建,然後回報.... –

+0

我試圖重建索引,但沒有工作.... – user1907557

0

我建議你幾個優化:

  1. 確保您的表具有索引;在WHERE條件或JOIN條件中使用的列需要在這些索引中
  2. 確保您不使用'*'選擇器,除非需要;