ใน SQL Server สถิติจะถูกอัพเดตโดยอัตโนมัติเมื่อAuto Update Statistics
อยู่ในTrue
(ซึ่งเป็นค่าเริ่มต้น) มีเหตุผลในการอัปเดตสถิติด้วยตนเองและในสถานการณ์ใดบ้าง
ใน SQL Server สถิติจะถูกอัพเดตโดยอัตโนมัติเมื่อAuto Update Statistics
อยู่ในTrue
(ซึ่งเป็นค่าเริ่มต้น) มีเหตุผลในการอัปเดตสถิติด้วยตนเองและในสถานการณ์ใดบ้าง
คำตอบ:
แน่นอนว่าหากข้อมูลของคุณเปลี่ยนแปลงบ่อยกว่าอัตราสถิติอัตโนมัติ (หรือว่าคุณกำลังอัปเดต <20% ของแถวบ่อยเช่นการอัปเดตสถานะหรือประทับวันที่ / เวลา) หรือถ้าตารางของคุณมีขนาดใหญ่และไม่เปลี่ยนแปลงเพียงพอที่จะกระตุ้นการอัปเดตสถิติอัตโนมัติ หรือถ้าคุณมีดัชนีที่กรอง ( เนื่องจากเกณฑ์สถิติอัตโนมัติยังคงขึ้นอยู่กับ% ของการเปลี่ยนแปลงในตารางทั้งหมดไม่ใช่% ของการเปลี่ยนแปลงของชุดย่อยของแถวในดัชนีที่กรอง )
อีกสองเหตุผล (ผิวเผิน):
สถิติการอัปเดตอัตโนมัติจะบล็อกข้อความค้นหาที่เรียกใช้การอัปเดตจนกว่าสถิติใหม่จะพร้อม
... นอกจากว่าคุณจะเปิดใช้งานสถิติการอัพเดทอัตโนมัติแบบอะซิงโครนัส จากนั้นแบบสอบถามที่เรียกใช้การอัปเดตจะไม่รอสถิติใหม่ แต่อาจทำงานด้วยสถิติเก่าและไม่ถูกต้อง
ฉันเจอปัญหาการบล็อคแปลก ๆ บางอย่างเมื่อฐานข้อมูลที่มีตารางค่อนข้างใหญ่ (44M แถว, 8.5 GB) จะเริ่มอัปเดตสถิติ เราเลิกใช้งานแอปพลิเคชันนั้นก่อนที่ฉันจะสามารถติดตามสิ่งที่เกิดขึ้นจริง ๆ ได้
ใช่จำไว้ว่าสถิติรถยนต์นั้นจะถูกสร้างขึ้นด้วยอัตราการสุ่มตัวอย่างเริ่มต้นเสมอ อัตราการสุ่มตัวอย่างเริ่มต้นนั้นอาจไม่สามารถสร้างสถิติที่แสดงถึงข้อมูลของคุณได้อย่างถูกต้อง