ค้นหา:
declare @X xml = '
<item ID = "0"/>
<item ID = "1"/>
<item/>
<item/>';
select I.X.value('@ID', 'int')
from @X.nodes('/item') as I(X);
ผลลัพธ์:
-----------
0
1
NULL
NULL
แผนการดำเนินการ:
สาขาด้านบน shreds XML ID
เพื่อสี่แถวและสาขาด้านล่างเรียกค่าสำหรับแอตทริบิวต์
สิ่งที่ทำให้ฉันแปลกประหลาดคือจำนวนแถวที่คืนจากผู้ดำเนินการรวมสตรีม แถว 2 ที่มาจากตัวกรองคือID
แอตทริบิวต์จากitem
โหนดแรกและโหนดที่สองใน XML สตรีมรวมจะส่งคืนสี่แถวหนึ่งแถวสำหรับแต่ละแถวป้อนเปลี่ยนการเข้าร่วมด้านในเป็นการรวมภายนอกได้อย่างมีประสิทธิภาพ
นี่คือบางสิ่งที่ Stream Aggregate ทำในสถานการณ์อื่นเช่นกันหรือเป็นเพียงสิ่งแปลก ๆ ที่เกิดขึ้นเมื่อทำการค้นหา XML
ฉันไม่สามารถเห็นคำแนะนำใด ๆ ในแผนการสืบค้นเวอร์ชัน XML ที่ Stream Aggregate นี้ควรทำงานแตกต่างไปจาก Stream Aggregate อื่น ๆ ที่ฉันสังเกตเห็นมาก่อน