ใช่ถ้าคุณ:
- ใช้ SQL Server 2014 หรือใหม่กว่า; และ
- สามารถเรียกใช้คิวรีที่มีค่าสถานะการสืบค้นกลับ 176ใช้งานอยู่ และ
- คอลัมน์ที่คำนวณคือ
PERSISTED
โดยเฉพาะอย่างน้อยต้องมีเวอร์ชันต่อไปนี้:
- การปรับปรุงที่สะสม 2 สำหรับ SQL Server 2016 SP1
- การปรับปรุง 4 สำหรับ SQL Server 2016 RTM
- 6 การปรับปรุงที่สะสมสำหรับ SQL Server 2014 SP2
แต่เพื่อหลีกเลี่ยงข้อผิดพลาด (อ้างอิงสำหรับปี 2014และสำหรับปี 2016 และ 2017 ) มีการแนะนำในการแก้ไขเหล่านั้นให้ใช้แทน:
การตั้งค่าสถานะการสืบค้นกลับมีผลบังคับใช้เป็น–T
ตัวเลือกการเริ่มต้นใช้งานได้ทั้งแบบโกลบอลและขอบเขตการใช้DBCC TRACEON
และต่อการสืบค้นด้วยOPTION (QUERYTRACEON)
หรือคำแนะนำแผน
การติดตามสถานะ 176 ป้องกันการขยายคอลัมน์ที่คำนวณแล้วยังคงอยู่
การโหลดข้อมูลเมตาเริ่มต้นดำเนินการเมื่อรวบรวมแบบสอบถามทำให้เกิดคอลัมน์ทั้งหมดไม่ใช่เฉพาะข้อมูลอ้างอิงโดยตรง สิ่งนี้ทำให้คำจำกัดความคอลัมน์ที่คำนวณทั้งหมดพร้อมใช้งานสำหรับการจับคู่ซึ่งโดยทั่วไปเป็นสิ่งที่ดี
ในฐานะที่เป็นผลข้างเคียงที่โชคร้ายหากหนึ่งในคอลัมน์ที่โหลด (คำนวณ) ใช้ฟังก์ชันที่ผู้ใช้กำหนดแบบสเกลาร์การปรากฏตัวของมันจะปิดการทำงานแบบขนานสำหรับการสืบค้นทั้งหมดแม้ว่าจะไม่ได้ใช้คอลัมน์ที่คำนวณแล้วก็ตาม
การติดตามค่าสถานะ 176 ช่วยด้วยสิ่งนี้หากคอลัมน์ยังคงอยู่โดยไม่โหลดข้อกำหนด (เนื่องจากการขยายจะถูกข้าม) ด้วยวิธีนี้ฟังก์ชั่นที่ผู้ใช้กำหนดแบบสเกลาร์จะไม่ปรากฏในแผนผังคิวรีการรวบรวม
ข้อเสียเปรียบหลักของแฟล็กการติดตาม 176 (นอกเหนือจากการจัดทำเอกสารเพียงเล็กน้อยเท่านั้น) คือมันยังป้องกันการจับคู่นิพจน์เคียวรีกับคอลัมน์ที่คำนวณได้: ถ้าเคียวรีมีนิพจน์ที่ตรงกับคอลัมน์ที่คำนวณแล้ว 176 แฟล็กการติดตาม การอ้างอิงไปยังคอลัมน์ที่คำนวณ
สำหรับรายละเอียดเพิ่มเติมโปรดดูบทความ SQLPerformance.com ของฉันถูกต้องคอลัมน์ยืนกราน Computed
เนื่องจากคำถามกล่าวถึง XML ซึ่งเป็นทางเลือกหนึ่งในการส่งเสริมค่าโดยใช้คอลัมน์ที่คำนวณและฟังก์ชั่นสเกลาร์คุณสามารถดูได้โดยใช้ดัชนี Selective XML ดังที่คุณเขียนไว้ในดัชนี XML ที่เลือก: ไม่แย่เลย