xml - xml 上的自加入慢
问题描述
我有一个表,其中提取了一些字段和一些 xml
每个产品都有一个 masterid,因此同一产品的所有颜色或尺寸都有相同的 masterid。我想输入任何变体并获取所有变体。
我通过这个找到masterID:
xml.value('(/product/attribute-list/attribute[@name="variation_master_product_id"]/value[@default="1"])[1]','char(11)') master
该表(部分)是这样的:
CREATE TABLE [dbo].[products_xml](
[varenr] [varchar](14) NOT NULL,
[ean] [varchar](30) NULL,
[title] [varchar](100) NULL,
[xml] [xml] NULL,
CONSTRAINT [PK_xml] PRIMARY KEY CLUSTERED
(
[varenr] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
` 我正在为自加入做 CTE,以查找所有具有相同 master_ID 的产品
;with p as (SELECT [varenr]
,xml.value('(/product/attribute-list/attribute[@name="variation_master_product_id"]/value[@default="1"])[1]','char(11)') master
,[ean]
,[title]
,[xml]
FROM [products_xml]
) select * from p p1 inner join p p2
on p1.master=p2.master
and p2.varenr like '277028%'
查询按预期工作,但速度非常慢,需要 10 秒才能在大约 8000 条记录上运行。
根据https://docs.microsoft.com/en-us/sql/relational-databases/xml/xml-indexes-sql-server?view=sql,我添加了主 XML 索引和 3 个辅助 XML 索引-server-2017但我不知道如何在这种情况下使用它们。
`
解决方案
推荐阅读
- javascript - JS如何一举删除/停用/销毁所有方法、类、setTimouts和setIntervals?
- python - 无法打开文件'main.py':[Errno 2] 没有这样的文件或目录
- javascript - 可交互组件和随机函数的 Aframe 问题
- laravel - Laravel/Eloquent,动态检索数据(whereIn,sum)
- c++ - glfwInit() 冻结程序
- angular - 是否可以将多个 HTTP 调用作为一个事务进行
- html - 如何在一个按钮中的链接之间添加垂直分隔符?
- sql - 如何将 int year 转换为 date 并将其显示为 Century SQL Oracle?
- c++ - 更改二维数组中的字符串时,它不会改变
- html - 一致的滚动背景