考虑以下集合,它是刚刚为针对它运行的查询创建的表变量 @ProductContent 的内容:
请注意项目是如何按 media_type_id、image_weight、image_id 和最后的 image_width DESC 排序的。如果我运行以下查询:
SELECT -- <images>
pcs.image_type AS [@Type]
,pcs.image_type_id AS [@ImageTypeId]
,(
SELECT -- <imageCollection>
pcc.image_id AS [@Guid]
,pcc.image_angle AS [@Angle]
,pcc.image_weight AS [@Weight]
,(
SELECT -- <image>
pci.mime_type AS [@MimeType]
,pci.content_guid AS [@Guid]
,pci.url AS [@Url]
,pci.media_type_id AS '@MediaTypeId'
,t.media_type_description '@Description'
,(
SELECT DISTINCT -- <attribute>
a.meta_attribute_id '@Id'
,a.meta_attribute_name '@Name'
,v.meta_value_name AS '@Value'
FROM [ADS2].dbo.ads_digital_content_meta m
JOIN [ADS2].dbo.ads_digital_content_meta_atr_voc a ON a.meta_attribute_id = m.meta_attribute_id
JOIN [ADS2].dbo.ads_digital_content_meta_value_voc v ON v.meta_value_id = m.meta_value_id
WHERE m.content_guid = pci.content_guid
FOR XML PATH('Attribute'), TYPE)
FROM
@ProductContent pci
JOIN [ADS2].dbo.ads_digital_content_media_type t ON t.media_type_id = pci.media_type_id
WHERE
pci.image_id = pcc.image_id
GROUP BY pci.content_guid, pci.mime_type, pci.url, pci.media_type_id, pci.image_width, t.media_type_description
FOR XML PATH('Image'), TYPE)
FROM @ProductContent pcc
WHERE pcc.image_type_id = pcs.image_type_id
AND pcc.product_id = pc.product_id
GROUP BY
pcc.product_id
,pcc.image_weight
,pcc.image_id
,pcc.image_angle
FOR XML PATH('ImageCollection'), TYPE)
FROM @ProductContent pcs
WHERE pcs.media_type_id = 15
AND pcs.product_id = pc.product_id
GROUP BY
pcs.image_type,
pcs.image_type_id
FOR XML PATH('Images'), TYPE
Run Code Online (Sandbox Code Playgroud)
由于某种原因,图像没有以正确的顺序出现。例如,宽度为 400 的图像首先出现,而不是宽度为 640 的图像。我的问题是,此查询的哪一部分正在更改 @ProductContent 中的顺序?我宁愿在插入到 @ProductContent 之前只排序一次,因为 XML 查询中的 order by 子句是一个很大的性能损失。
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |