請找到正在使用中所顯示的查詢被用來從XML搜索名稱,單詞或簡短數據庫中的XML列的XQuery - 表XML列中搜索
搜索關鍵字以下查詢SQL Server中的列。使用的CMS是Umbraco。
該查詢最初是在數據有限的情況下設計的。
現在數據庫有數百萬條記錄,並且查詢超時無法獲取數據。 查詢也優先在搜索結果中取出作爲 中如果返回Name字段數據搜索結果返回的CASE 1,否則 取決於搜索數據返回
SELECT Name,word,brief, */Selecting Values */
CASE
WHEN Name like '%' THEN 1 */Prioritizing Order in which data to be seen */
WHEN word like '%' THEN 2
WHEN brief like '%' THEN 3
END AS Search
from
(select
A.xml.value('(//@node)[1]','nvarchar(20)') as Name, /* XQuery */
A.xml.value('(//word)[1]','nvarchar(225)') as word,
A.xml.value('(//brief)[1]','nvarchar(max)')as brief
from
(Select Convert(xml, xml) AS XML
from [dbo].[cmsContentXml]) AS B
Cross Apply xml.nodes('//items/item') AS A(xml)) D
where ((Name like '%') /*Condition */
OR(word like '%')
OR(brief like '%'))
group by word,Name,brief
order by 3 ASC
請幫忙順序優化或重寫此查詢以在xml列中搜索數據的解決方案。除了從列中檢索數據。
在前端單擊搜索按鈕而不輸入任何關鍵字時,單擊操作必須從數據庫中檢索所有項目。
在此先感謝
向我們展示您的XML可能看起來像什麼! – 2011-12-20 15:59:20
我無法從我所在的地方訪問數據庫。我引用的xml列是因爲它是由Umbraco CMS創建的默認值「cmscontentxml」是表名。 – Gallop 2011-12-20 16:08:45
沒有XML文檔,沒有什麼可以優化的。請提供XML文檔(一個典型的例子),使這個問題有意義。 – 2011-12-20 17:09:37