sql >> Database teknologi >  >> RDS >> Sqlserver

Eksekvering af lagret proc fra DotNet tager meget lang tid, men i SSMS er det øjeblikkeligt

Da min kommentar så ud til at give det rigtige svar, besluttede jeg at flytte den til et fuldt svar for eftertiden i stackoverflow-ånden.

Dit problem ser ud til at være forårsaget af SQL Servers Parameter Sniffing .For at forhindre det, skal du blot tildele dine indkommende parameterværdier til andre variabler, der er erklæret øverst på din SP.

Se denne fine artikel om det

Eksempel:

CREATE PROCEDURE dbo.MyProcedure
(
    @Param1 INT
)
AS

declare @MyParam1 INT
set @MyParam1 = @Param1

SELECT * FROM dbo.MyTable WHERE ColumnName = @MyParam1 

GO

Jeg kopierede disse oplysninger fra eggheadcafe.com .

Edit:Ifølge Johann Strydoms kommentar er her en anden mulighed:Optimer parameterdrevne forespørgsler med SQL Server OPTIMER TIL tip .



  1. Migrering af MySQL til PostgreSQL på AWS RDS, del 1

  2. Slet forespørgsel virker ikke fra java-applikation

  3. Hvordan ændres kolonnesortering uden at miste eller ændre data?

  4. Er der et "connect by"-alternativ i MySQL?