คำเตือนสำหรับสถิติที่ขาดหายไปในแผนการดำเนินการ


23

ฉันมีสถานการณ์ที่ฉันไม่เข้าใจ แผนการดำเนินการของ SQL Server ของฉันบอกฉันว่าฉันไม่มีสถิติในตาราง แต่สถิติถูกสร้างขึ้นแล้ว:

การเตือน

แต่ถ้าเราดูที่โต๊ะเราจะเห็นว่ามีสถิติที่สร้างขึ้นโดยอัตโนมัติ:

ป้อนคำอธิบายรูปภาพที่นี่

บางคนสามารถช่วยให้เข้าใจว่าเป็นอย่างไร

Auto_Update และ Auto_Create เปิดสถิติในฐานข้อมูลปัจจุบัน

ฉันใช้ SQL Server 2014

คำตอบ:


15

คำเตือนไม่สอดคล้องกับสถิติคอลัมน์เดียวที่ขาดหายไปเสมอไป

ไม่มีวิธีง่ายๆในการกำหนดค่าสถิติที่แน่นอนที่เครื่องมือเพิ่มประสิทธิภาพค้นหาและไม่พบในทุกกรณี แต่เกือบทุกสถิติเชิงคอลัมน์หลายคอลัมน์จะให้ข้อมูลที่มีความสัมพันธ์กันในภาคต่าง ๆ ในแบบสอบถาม

บางทีในกรณีของคุณมันตรงกับเพรดิเคตในตัวกรองหลังจากการสแกนที่มีคำเตือนปรากฏขึ้น

มันจะดีถ้า SQL Server รายงานคอลัมน์ทั้งหมดสำหรับคำเตือน 'สถิติที่หายไป' แต่นั่นไม่ใช่วิธีการทำงานในวันนี้โชคไม่ดี

อาจจำเป็นต้องใช้การทดลองและข้อผิดพลาดจำนวนหนึ่งเพื่อระบุสถิติหลายคอลัมน์ที่คุณต้องสร้างเพื่อลบคำเตือน โปรดทราบว่าไม่สามารถสร้างสถิติหลายคอลัมน์โดยอัตโนมัติ แม้จะมีคำเตือนคุณอาจหรืออาจไม่พบว่าคุณภาพของการประมาณการดีขึ้นแม้ว่าจะมีการจัดทำสถิติที่ขาดหายไปก็ตาม


8

เนื่องจากดูเหมือนชัดเจนว่ามีสถิติอยู่แล้วสำหรับคอลัมน์ใดคอลัมน์หนึ่งฉันจึงเสนอความเป็นไปได้สองประการ:

  1. Object Explorer ชี้ไปที่ฐานข้อมูลอื่น - ฉันสงสัยว่าเนื่องจากฐานข้อมูลมีDEVชื่ออยู่ดังนั้นจึงเป็นไปได้ว่าในกรณีหนึ่งที่คุณดูที่ dev และอีกอันที่คุณไม่ใช่
  2. แผนการใช้งานมาจากก่อนที่จะสร้างสถิติ (ไม่ว่าจะถูกสร้างขึ้นก่อนหน้านี้หรือมีโอกาสน้อยกว่าที่สิ่งที่ทำให้คอมไพล์ recompile ถูกทริกเกอร์เมื่อมีการสร้างสถิติ)

โปรดตรวจสอบว่าคำตอบง่าย ๆ (1) ไม่ใช่ปัญหาและลองใช้คำค้นหาเดียวกันOPTION (RECOMPILE)เพื่อยืนยันหรือลบกฎ (2)


1
Aaron Bertnand ขอบคุณมากสำหรับคำตอบของคุณ แต่ Object Explorer นั้นชี้ไปที่ db ปัจจุบันและการเพิ่ม OPTION (RECOMPILE) ไม่สามารถแก้ไขปัญหาได้ ฉันต้องการเพิ่มว่าแบบสอบถามของฉันกำลังดำเนินการตามขั้นตอนที่เก็บไว้
Artashes Khachatryan

2

ฉันเพิ่งสังเกตเห็นว่าเมื่อคุณได้รับคำเตือนเกี่ยวกับสถิติหากคุณเรียกใช้คิวรีหรือโพรซีเดอร์ด้วยการตั้งค่าด้านล่าง:

SET SHOWPLAN_ALL ON

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถดูสถิติที่หายไปได้:

ป้อนคำอธิบายรูปภาพที่นี่

และการใช้สคริปต์ที่นี่คุณสามารถดูได้ว่ามีสถิติใดบ้างและหากขาดหายไปคุณสามารถเพิ่มได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.