อาการ
สมมติว่า คุณมีตารางที่ใช้ชุดข้อห้าม Foreign Key เพื่อลบสิ่งที่เกี่ยวข้อง และสถิติบนคอลัมน์ Foreign Key ไม่ครอบคลุมทั้งช่วงของค่าคีย์ในตาราง (ตัวอย่างเช่น เนื่องจากสถิติไม่ได้รับการอัปเดตหลังจากการเปลี่ยนแปลงการแจกแจงข้อมูลในตาราง) ในสถานการณ์นี้ เมื่อคุณพยายามลบแถวที่สอดคล้องกับค่าคีย์ที่ไม่แสดงในฮิสโตแกรมสถิติ และตัวปรับคิวรีให้เหมาะสมใช้การประเมินคาร์ดินาลลิตี้เริ่มต้น การดําเนินการลบจะช้าลงกว่าที่คาดไว้ คุณอาจสังเกตเห็นการดําเนินการสแกนดัชนีจะถูกใช้เพื่อค้นหาแถวที่ตรงกันในตารางการอ้างอิง
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
การแก้ไข
ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตสะสมต่อไปนี้ของ SQL Server:
หมายเหตุ: การแก้ไขนี้จะเปิดใช้งานเมื่อคุณเปิดการแก้ไขด่วนที่ปรับให้เหมาะสมเท่านั้น (ผ่านตัวเลือกการกําหนดค่าที่กําหนดขอบเขตฐานข้อมูล เคล็ดลับคิวรี หรือค่าสถานะการติดตาม 4199)
เกี่ยวกับการอัปเดตสะสมของ SQL Server
การอัปเดตสะสมใหม่แต่ละรายการของ SQL Server มีการแก้ไขด่วนทั้งหมดและการแก้ไขด้านความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตสะสมก่อนหน้า ดูการอัปเดตสะสมล่าสุดของ SQL Server:
วิธีแก้ไขปัญหาชั่วคราว
เมื่อต้องการแก้ไขปัญหานี้ชั่วคราว ให้ใช้หนึ่งในวิธีต่อไปนี้:
-
ใช้การประมาณคาร์ดินาลลิตี้ดั้งเดิม For more information, see Cardinality Estimation (SQL Server).
-
เอาการลบสิ่งที่เกี่ยวข้องออกจากการนิยาม Foreign Key และดําเนินการลบโดยใช้ JOIN ระหว่างตารางแม่และตารางลูกเพื่อดําเนินการที่เทียบเท่ากับการลบสิ่งที่เกี่ยวข้อง
-
อัปเดตสถิติในตารางแม่ด้วย FULLSCAN ก่อนลบข้อมูล
อ้างอิง
เรียนรู้เกี่ยวกับศัพท์เฉพาะที่Microsoft ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์