Mam tabelę zawierającą ponad 100 MB rekordów. Tabela ma indeks klastrowy i indeks nieklastrowy.Procedura składowana SQL Server wolniejsza niż proste zapytanie
Mogę uruchomić podstawową liczbę przy użyciu T-SQL na stole i uruchomienie trwa 1 sekundę. Kiedy wstawię to samo dokładne zapytanie liczenia do procedury przechowywanej, uruchomienie trwa 12 sekund.
Przyjrzałem się planowi wykonania zarówno dla standardowego zapytania, jak i dla procedury przechowywanej i obydwa korzystają z indeksu nieklastrowanego.
Nie wiem, dlaczego procedura składowana jest tak powolna w porównaniu do standardowego zapytania.
Przeczytałem kilka rzeczy o ponownym indeksowaniu w takiej sytuacji, ale nie jestem pewien, dlaczego muszę to zrobić. Ponowne indeksowanie trwa kilka godzin, więc chcę się upewnić, że to zadziała.
Każda pomoc w tej sprawie byłaby świetna.
Dzięki
UPDATE
Oto procedura przechowywana:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE quickCount
@sYID INT,
@eYID INT
AS
BEGIN
SET NOCOUNT ON;
SELECT COUNT(leadID)
FROM dbo.leads
WHERE yearID >= @sYID
AND yearID <= @eYID
END
GO
i tutaj jest średnia zapytania:
SELECT COUNT(leadID)
FROM leads
WHERE yearID >= 0
AND yearID <= 99
Próbowałem uruchomić go bez parametrów a SP biegnie szybciej (1 sekunda). Zakładam więc, że ma to coś wspólnego z parametrami.
można pokazać nam trochę SP, doe przechodzą w dowolnych parametrów? –
Myślę, że musisz pokazać swoje zapytanie i SP. –
Może się zdarzyć, że wypróbowałeś zapytanie ze stałymi i parametry używania procedury zamiast tych stałych. Proponuję utworzyć przykład SQLFiddle lub zamieścić kilka szczegółów na temat schematu i zapytania/sp –