เลขที่
สิ่งนี้เคยเป็นจริงเมื่อนานมาแล้ว (และไม่เป็นอย่างน้อยตั้งแต่ SQL Server 2000) หรือไม่เคยเป็นจริงและ DBA ของคุณเพิ่งสับสนคำแนะนำของเขากับสิ่งต่อไปนี้ :
มันเป็นสิ่งสำคัญที่จะรวมกลุ่มคำสั่ง DDL ทั้งหมด (เช่นการสร้างดัชนี) สำหรับตารางชั่วคราวที่จุดเริ่มต้นของขั้นตอนการจัดเก็บ โดยการวางคำสั่ง DDL เหล่านี้ไว้ด้วยกันการรวบรวมที่ไม่จำเป็นเนื่องจากการเปลี่ยนแปลงสกีมาสามารถหลีกเลี่ยงได้
คุณสามารถหาคำอธิบายเพิ่มเติมเกี่ยวกับเหตุผลที่อยู่เบื้องหลังคำแนะนำนี้ได้ในหน้านี้
ถ้าเราดูที่Microsoft KBนี้เราจะเห็นว่าสาเหตุของการคอมไพล์การจัดเก็บอาจเป็นหนึ่งในสาเหตุดังต่อไปนี้ (SQL Server 2005+):
- เปลี่ยนสคีมาแล้ว
- สถิติเปลี่ยนไป
- คอมไพล์ DNR
- เปลี่ยนการตั้งค่าตัวเลือก
- เปลี่ยนตารางชั่วคราวแล้ว
- เปลี่ยนชุดรีโมตระยะไกลแล้ว
- สำหรับการเรียกดู perms มีการเปลี่ยนแปลง
- สภาพแวดล้อมการแจ้งเตือนการเปลี่ยนแปลงมีการเปลี่ยนแปลง
- มุมมอง MPI เปลี่ยนไป
- ตัวเลือกเคอร์เซอร์เปลี่ยนไป
- ด้วยตัวเลือก recompile
ประกาศตัวแปร - แม้ตัวแปรตาราง (เช่น@table_variable
) - ไม่สามารถเรียกใด ๆ ของเหตุการณ์เหล่านี้เห็นได้ชัดเพราะการประกาศตัวแปรไม่นับเป็น DDL ตัวแปร (แม้แต่ตัวแปรตาราง) เป็นวัตถุชั่วคราวที่ใช้สำหรับการเขียนโปรแกรม T-SQL ของคุณโดยเฉพาะ นั่นเป็นเหตุผลที่ตัวแปรตารางได้รับสถิติไม่มีและไม่ผูกพันตามการทำธุรกรรม การประกาศตัวแปร (ตารางหรือไม่) ไม่สามารถทริกเกอร์การคอมไพล์ซ้ำได้
การสร้างตาราง temp (เช่น#temp_table
) หรือดัชนีอย่างไรก็ตามเป็น DDL ที่มีผลต่อการกำหนดทางกายภาพของฐานข้อมูล ตารางชั่วคราวและดัชนีเป็นวัตถุ "ของจริง" ที่มีสถิติและการควบคุมการทำธุรกรรมดังนั้นการสร้างพวกเขาสามารถเริ่มต้นเหตุการณ์ใด ๆ 1, 2 หรือ 5 ในรายการด้านบนและทำให้ทริกเกอร์ proc recompile