อาการ
เมื่อคุณเติมข้อมูลตัวแปรของตารางที่มีแถวหลายแถวแล้วเข้าร่วมกับตารางอื่นตัวเพิ่มประสิทธิภาพของคิวรีอาจเลือกแผนการสอบถามที่ต่ำซึ่งอาจทำให้ประสิทธิภาพของคิวรีช้าลง
การแก้ไข
หลังจากที่คุณนำโปรแกรมแก้ไขด่วนนี้ไปใช้แล้วคุณสามารถเปิดใช้งานการติดตามค่าสถานะ๒๔๕๓เพื่ออนุญาตให้ตัวแปรตารางทริกเกอร์การคอมไพล์ใหม่เมื่อมีการเปลี่ยนแปลงจำนวนแถวที่เพียงพอ ซึ่งอาจทำให้ตัวเพิ่มประสิทธิภาพของคิวรีเลือกแผนการใช้งานที่มีประสิทธิภาพมากขึ้น ปัญหานี้ได้รับการแก้ไขในการอัปเดตที่สะสมหรือ/และ Service Pack สำหรับ SQL Server ครั้งแรก
การอัปเดตที่สะสม3สำหรับ SQL Server ๒๐๑๔ /en-us/help/2984923
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ ตรวจสอบการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
เซอร์วิสแพ็คจะได้รับการสะสม Service pack ใหม่แต่ละชุดจะมีการแก้ไขทั้งหมดที่อยู่ใน service pack ก่อนหน้านี้พร้อมกับการแก้ไขใหม่ คำแนะนำของเราคือการนำ service pack ล่าสุดและการอัปเดตที่สะสมล่าสุดสำหรับ service pack นั้นไปใช้ คุณไม่จำเป็นต้องติดตั้ง service pack ก่อนหน้าก่อนที่คุณจะติดตั้ง service pack ล่าสุด ใช้ตาราง1ในบทความต่อไปนี้เพื่อค้นหาข้อมูลเพิ่มเติมเกี่ยวกับ service pack ล่าสุดและการอัปเดตที่สะสมล่าสุด:
วิธีการตรวจสอบความถูกต้องของระดับเวอร์ชันและการอัปเดตของ SQL Server และคอมโพเนนต์
ข้อมูลเพิ่มเติม
เมื่อคุณใช้ตัวแปรตารางในชุดงานหรือกระบวนงานคิวรีจะได้รับการคอมไพล์และปรับให้เหมาะสมสำหรับสถานะว่างเริ่มต้นของตัวแปรตาราง ถ้าตัวแปรตารางนี้ถูกเติมด้วยหลายแถวที่ใช้งานจริงแผนการสอบถามที่คอมไพล์แล้วอาจไม่เหมาะสมที่สุดอีกต่อไป ตัวอย่างเช่นคิวรีอาจเข้าร่วมตัวแปรตารางที่มีการวนรอบที่ซ้อนกันเนื่องจากมักจะมีประสิทธิภาพมากขึ้นสำหรับจำนวนแถวที่น้อย แผนการสอบถามนี้อาจเป็นค่าต่ำถ้าตัวแปรตารางมีแถวนับล้าน การรวมแฮชไม่อาจเป็นตัวเลือกที่ดีกว่าภายใต้เงื่อนไขดังกล่าว เมื่อต้องการรับแผนคิวรีใหม่คุณจำเป็นต้อง recompiled อย่างไรก็ตามไม่เหมือนกับผู้ใช้อื่นหรือตารางชั่วคราวแต่การเปลี่ยนจำนวนแถวในตัวแปรตารางจะไม่ทริกเกอร์การคอมไพล์แบบสอบถาม โดยทั่วไปแล้วคุณสามารถแก้ไขปัญหานี้ได้ด้วยตัวเลือก (คอมไพล์ใหม่) ซึ่งมีค่าใช้จ่ายในการจ่ายค่าใช้จ่ายของตนเอง การติดตามค่าสถานะ๒๔๕๓ช่วยให้ประโยชน์ของการคอมไพล์แบบสอบถามโดยไม่มีตัวเลือก (คอมไพล์ใหม่) ค่าสถานะการติดตามนี้จะแตกต่างจากตัวเลือก (คอมไพล์ใหม่) ในสองด้านหลัก (1) จะใช้เกณฑ์จำนวนแถวเดียวกันกับตารางอื่น คิวรีไม่จำเป็นต้องได้รับการคอมไพล์สำหรับทุกการดำเนินการที่ไม่เหมือนกับตัวเลือก (คอมไพล์ใหม่) มันจะทริกเกอร์การคอมไพล์เฉพาะเมื่อจำนวนแถวเปลี่ยนแปลงเกินขีดจำกัดที่กำหนดไว้ล่วงหน้า (2) ตัวเลือก (คอมไพล์ใหม่) บังคับให้คิวรีเพื่อแทรกพารามิเตอร์และปรับคิวรีให้เหมาะสม ค่าสถานะการติดตามนี้จะไม่บังคับให้ใช้พารามิเตอร์ forceหมายเหตุ ค่าสถานะการติดตามนี้ต้องอยู่ในขณะใช้งานจริง คุณไม่สามารถใช้แฟล็กการติดตามนี้กับ QUERYTRACEON ค่าสถานะการติดตามนี้ต้องใช้ด้วยความระมัดระวังเนื่องจากสามารถเพิ่มจำนวนของคิวรี recompiles ซึ่งอาจมีค่าใช้จ่ายมากกว่าเงินออมจากการเพิ่มประสิทธิภาพของคิวรีที่ดียิ่งขึ้น
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"