示すクエリは、XMLから名前、単語や簡単なを検索するために使用されているデータベースのXML列のXQuery - 表にXML列内を検索すること
でキーワードを検索するために使用されている次のクエリを見つけてください。 SQL Serverの列。使用しているCMSはUmbracoです。
クエリは、データが限定されたときに最初に設計されました。
今、データベースは、データをフェッチすることができませんでしたレコードの数百万人とクエリ時間を持っています。 クエリは、名前のフィールドデータ検索結果が返された場合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がどのように見えるかを教えてください! –
私が参照している場所からデータベースにアクセスできません。参照するxml列は、Umbraco CMSがデフォルトで作成したものです。CMS "cmscontentxml"はテーブル名です。 – Gallop
XMLドキュメントがないと、最適化するものはありません。この質問を意味のあるものにするために、XML文書(典型的な例)を提供してください。 –