2010-06-07 34 views
1

我正在使用一個包含6列的簡單表,其中3個屬於XML類型,不受模式約束。 當表達到大約120,000或150,000行的大小時,我發現在表中執行任何查詢都會產生巨大的性能成本。爲了比較,我有另一個表,它的大小以相同的速度增長,但只包含標量類型(int,datetime和幾個浮點列)。即使在200,000行之後,該表格的表現仍然很好。 順便說一句,我沒有在xml列上使用XQuery,我只使用常規的SQL查詢語句。在MS SQL 2008的表中使用XML列時對性能的影響

一些細節:這兩個表都包含一個名爲SampleTime的DateTime字段。 像一個聲明(這是在存儲過程,但我告訴你實際的語句)

SELECT MAX(sampleTime) SampleTime 
FROM dbo.MyRecords 
WHERE [email protected] 

需要對量表0秒無XML列,以及任何從上表中13到20秒XML列。這取決於我將數據庫設置在哪個驅動器上。目前它坐落在不同的主軸上(不是C :),它需要13秒。

有沒有人見過這種行爲之前,或有什麼暗示我做錯了什麼? 我用SQL 2008 EXPRESS和全面發佈的SQL Server 2008試了這個,沒有什麼區別。 噢,最後一個細節:我從C#應用程序,.NET 3.5,使用SqlConnection,SqlReader等這樣做。

我想感謝一些洞察,謝謝!

山姆

回答

0

,你對此的順序PlacementIDsampleTime的指數?

兩個表和列類型的大小是不相關的,如果一個指數能夠滿足查詢(「覆蓋」)

+0

當我將索引放在我用來搜索表格的兩列時,性能有所提高。 謝謝! – 2010-06-11 21:18:22

0

我們注意到顯著的性能問題時,獨立的XML行的大小超過64KB。不知道你是否在這個範圍內,但是它幾乎是即時查詢和那些花費60秒以上的查詢之間的區別。

在一天結束時,我們將所有可查詢數據提取到普通的sql表中以執行我們的搜索。順便說一句,這是我們最後一次使用xml數據類型。