2011-12-01 46 views
1

我有一個包含大約3,200萬行的表。在這個表中有item_id(不是主鍵)和文本列。需要幫助來改進T-SQL查詢

我想要做的是連接文本列與相同的item_id's。並在報告中使用它。

到目前爲止,我們一直在使用FOR XML PATH關鍵字來連接。但是我們的客戶對延遲並不滿意。

所以我們嘗試COALESCE(我們嘗試過的方法來描述here)我們沒有得到正確的結果(也許它要花費太長的時間)

所以,球員,如果你知道更好的方法,技術可以你幫我解決這個問題?

謝謝...

+6

你應該發佈你正在嘗試的兩個查詢..('FOR XML PATH' one和'COALESCE' one) –

+0

item_id列索引? – Mark

+1

字符串串聯很慢。所以搜索字符串和解析字符串。就是那樣子。我會推動重新格式化報告或選擇更少的行或緩存策略。 –

回答

0

添加爲指數ITEM_ID列。

0
  • 也許使用壓縮數據作爲字段而不是字符。
  • 將item_id作爲主鍵與表格一起使用:最後一個文本ID,以及從第一個ID到最後一個ID的連接文本。更新此表增量。應該更快。花費雙倍的空間。
0

做所有這些:

  1. 爲它們是你在那裏部分字段創建索引。

  2. 而不是使用笛卡爾乘法使用連接(如果您在查詢中使用笛卡爾乘法)。

  3. 在您的where子句中,首先放置更快且不太可能的邏輯操作數。例如,如果A和B都是真的,如果兩者都是真的,那麼如果A是假的,B就不會被計算出來,並且你贏了很多時間。這可能是做成千上萬的邏輯檢查或不這樣做的區別,所以當然這是一種優化。

我希望這有助於。