對於一個個人項目,爲了提高性能和安全性,我試圖在主表的XML字段中添加顯示信息。 在這種情況下,訂單和訂單。使用XML字段提高性能 - 有可能嗎?
當前設置是:
tblOrders具有1個索引:Clustered on UID
tblOrderItems具有1個索引:Clustered on UID
tblOrder.Orderlines(XML)具有2個索引。一個primary and a secondary on PATH.
現在我想要以下2個查詢:
SELECT Ord.UID
, Item.DomainName
, Item.BasicInfo
, Item.Base
, Item.Period
FROM tblOrder Ord
INNER JOIN tblOrderItem Item
ON Item.OrderID = Ord.UID
WHERE Item.DomainName = 'domainname.com'
和
SELECT
UID
, c.value('(DomainName)[1]','nvarchar(150)') AS DomainName
, c.value('(BasicInfo)[1]','nvarchar(150)') AS [Basic Info]
, c.value('(Base)[1]','float') AS [Base Price]
, c.value('(Period)[1]','smallint') AS Period
FROM tblOrder
CROSS APPLY tblOrder.OrderLines.nodes('/OrderItem/line') as t(c)
WHERE c.value('(DomainName)[1]','nvarchar(150)') = 'domainname.com'
第一個具有4毫秒的平均時間,而第二個有一個38MS平均時間。 這兩個測試都使用相同的數據完成,這並不是很多,因爲我試圖決定使用哪種數據模型。
我的問題在最後:是否有可能重新編寫xml/xml查詢來使這個更高性能,然後常規內部聯接?
謝謝。