وقتی SQL Server بیشازحد به حافظهاش اعتماد میکنه.
خیلی وقتها مشکل از خود کوئری نیست،
از Execution Plan قدیمیه که دیگه با دیتای فعلی همخوانی نداره.
سناریوی رایج:
Batch Update با TOP
لوپ یا Job طولانی
دیتایی که وسط کار شدیداً تغییر میکنه
کوئری بیخطا تموم میشه، ولی هنوز دیتا باقی مونده!
علتش؟ SQL Server یه Plan میسازه، Cache
میکنه و میگه:
«دفعه بعد هم اوضاع همینه»
در حالی که نیست.
اینجاست که این خط نجاتدهنده میاد وسط:
OPTION (RECOMPILE)
چی کار میکنه؟
هر بار Compile جدید، تخمین دقیقتر، Join درستتر، Memory Grant واقعی، پایان دادن به رفتارهای «عجیب ولی بیخطا»
جمعبندی:
ء Recompile یعنی «تصمیمگیری با وضعیت امروز دیتا، نه خاطرات دیروز»
@DevTwitter | <Sajjad Zibafar/>
Post #11304
5.01K

- 👍 15
- ❤ 6
- 🍌 2