Έχω στο σύστημά μου μια stored procedure (που περιέχει 2 select) η οποία κάποιες στιγμές τρέχει πολύ αργά. Αφού το έψαξα, διαπίστωσα ότι μάλλον αυτό οφείλεται σε parameter sniffing.
Αυτό που παρατήρώ και μου κάνει εντύπωση είναι ότι εκτελώντας
SELECT *
FROM
sys.dm_exec_cached_plans decp
CROSS
APPLY sys.dm_exec_query_plan(decp.plan_handle) deqp
CROSS
APPLY sys.dm_exec_sql_text(DECP.plan_handle) as FFF
INNER
JOIN sys.objects so
ON
deqp.objectid = so.object_id
WHERE
so.name = 'mySP_Name'
βρίσκω για την stored procedure 2 εγγραφές δηλ
2 διαφορετικά execution plans. Είναι φυσιολογικό αυτό και αν όχι από τι προκαλείται?
Πώς μπορώ να χρησiμοποιήσω την USE PLAN ή την KEEP PLAN ή την KEEP FIXED PLAN ώστε να ορίσω PLAN GUIDE μόνο για το δεύτερο select της sp?
Θα μπορούσα αντίστοιχα να το κάνω για όλη τη procedure και πώς?