Ich hatte ein ähnliches Problem mit gespeicherten Prozeduren, und für mich stellte sich heraus, dass es sich um "Parameter-Sniffing" handelte. Googlen Sie das und sehen Sie, ob es Ihr Problem löst. Für mich war es eine dramatische Beschleunigung, nachdem ich es behoben hatte.
In meinem Fall habe ich es behoben, indem ich für jeden übergebenen Parameter eine lokale Variable deklariert und dann die lokale Variable diesem Parameterwert zugewiesen habe, und der Rest des Prozesses hat die lokalen Variablen für die Verarbeitung verwendet ... aus welchem Grund auch immer, dies besiegte das Parameter-Sniffing.