我有一個視圖從一個表中提取一些信息與XML數據。
每個文檔包含一個Product
和幾個PurchaseOrderDetail
。我想爲每個Product
創建一個全部爲PurchaseOrderDetail
的視圖。如何重寫SQL xpath查詢,以便能夠創建索引視圖
CREATE VIEW [dbo].[XML_PurchaseOrders]
WITH SCHEMABINDING
AS
SELECT
p.n.value('.', 'int') AS PurchaseOrderID
,x.ProductID
FROM dbo.XmlLoadData x
CROSS APPLY x.PayLoad.nodes('declare namespace NS="http://schemas.datacontract.org/2004/07/XmlDbPerfTest";
/NS:ProductAndRelated/NS:Product/NS:PurchaseOrderDetails/NS:PurchaseOrderDetail/NS:PurchaseOrderID') p(n)
GO
PayLoad
列包含XML數據。
該視圖的問題在於,由於XML文檔既大又豐富,所以速度很慢。
我想指數這一觀點但給我的錯誤
不能創建視圖「XmlLoad.dbo.XML_PurchaseOrders」指標,因爲它包含一個適用。考慮不索引視圖,或刪除APPLY。
是否有可能重寫視圖使其能夠添加索引?
我已經嘗試了幾次嘗試,主要是與select ... from (select ....) innnerSelect group by foo
,但都失敗了一個或另一個關於視圖索引的規則。
因爲您需要使用XML中的多個節點,所以我沒有看到如果沒有'CROSS APPLY',我怎麼能做到這一點,因此我沒有看到如何在這樣的視圖中做到這一點,您可以創建一個索引視圖:-( –
@marc_s,我也沒有,但我希望有一些其他方式來擴展我不知道的XML –
我假設沒有選項可以從XML中提取這些數據並存儲在關係表中? – billinkc