คุณจะต้องให้อภัยความไร้เดียงสาของฉันเพราะฉันไม่ใช่ DBA แต่ความเข้าใจของฉันคือเมื่อเวลาผ่านไปสถิติของการเปลี่ยนแปลงฐานข้อมูลและกระบวนการจัดเก็บจะต้องถูกคอมไพล์ใหม่เพื่อให้แผนแบบสอบถามเป็นปัจจุบันด้วยสถิติล่าสุด
สมมติว่าฉันมีโพรซีเดอร์ที่เก็บไว้ในฐานข้อมูลของฉันซึ่งถูกคอมไพล์กับสถิติล่าสุดในบางช่วงเวลาปกติความหมายของอินไลน์ซับโพรซีเดอร์ที่เก็บในโค้ดและล้อมรอบในsp_executesql
คำสั่งคืออะไร? ฉันจะสูญเสียการรีเฟรชแผนแบบสอบถามที่เคยเกิดขึ้นเป็นส่วนหนึ่งของการคอมไพล์ใหม่ของขั้นตอนหรือไม่
หากมีสิ่งอื่นใด (นอกเหนือจากสิทธิ์) ที่ฉันต้องพิจารณาก่อนที่จะทำการเปลี่ยนแปลงนี้แล้วฉันขอขอบคุณข้อมูลเชิงลึกของคุณ
ฉันอ่านสิ่งนี้ใน MSDN:
ความสามารถของเครื่องมือเพิ่มประสิทธิภาพการสืบค้น SQL Server เพื่อจับคู่สตริง Transact-SQL ใหม่กับแผนการดำเนินการที่มีอยู่ถูกขัดขวางโดยค่าพารามิเตอร์ที่เปลี่ยนแปลงตลอดเวลาในข้อความของสตริงโดยเฉพาะอย่างยิ่งในงบ Transact-SQL ที่ซับซ้อน
ดังนั้นสมมติว่ากระบวนการที่เก็บไว้ฉันพยายาม in-line และ wrap ในsp_executesql
นั้นมีพารามิเตอร์บางอย่างแน่นอนนี่คือการบอกว่าแม้ว่าแผนการดำเนินการของฉันจะถูกแคชฉันทำให้ SQL Server สามารถค้นหาและนำกลับมาใช้ใหม่ได้ยากขึ้นหรือไม่