0

我正在使用存儲過程。 它使用視圖並將結果集錶轉換爲XML格式。 我們使用了'FOR XML AUTO,ROOT('toxicsite'),TYPE'語句。 該視圖正在返回14k條記錄,並在其轉換爲XML之後...需要2分鐘。 需要另一種替代方案的幫助或我如何能夠優化查詢轉換使用FOR XML AUTO,ROOT('RootName'),TYPE爲14K記錄會使SQL查詢變慢

+0

只是爲了正確地得到這樣的:查詢運行沒有'FOR XML'是速度不夠快,但是當你添加'爲它XML'緩慢完成?你如何衡量時間?你在用XML做什麼? 14k記錄相當多。 XML不是爲更大的數據而設計的...... – Shnugo

+0

是的......如果我從視圖中獲取數據,它會在17秒內返回(14k記錄)。但是如果我應用ForXML ......它是一個需求..我把這個XML發送到API進一步處理。 –

回答

0

我剛剛嘗試過這個簡單的SELECT TOP 14000 * FROM SomeBigTable。 SSMS在2秒後準備就緒。與FOR XML AUTO它返回相當一樣快。我不認爲,這創造了XML正在很久......

如果您VIEW是非常複雜的可能是,這是AUTO欺騙了你。 AUTO試圖找到您所查詢(相關數據的嵌套)

作爲快速射擊你可以嘗試FOR XML RAW,TYPE只是爲了檢查的性能差異適當的內部結構。最好是用FOR XML PATH明確的方法,你可以自己指定嵌套和關係。

如果有涉及(VARBINARY數據)的BLOB,你有這樣的轉換爲base64的額外費用,如果涉及許多字符串,特別是如果他們有很多非拉丁人物,你有額外的實體編碼的成本...

一般XML是驚人的快...