请找到正在使用中所显示的查询被用来从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