Het probleem dat u ondervindt, is (vrijwel zeker) te wijten aan een queryplan in de cache, dat geschikt is voor sommige versies van parameters die aan de query worden doorgegeven, maar niet voor andere (ook wel Parameter Sniffing genoemd).
Dit komt vaak voor en wordt vaak verergerd door verouderde statistieken en/of slecht gefragmenteerde indexen.
Eerste stap :zorg ervoor dat u al uw indexen opnieuw hebt opgebouwd en dat de statistieken over niet-geïndexeerde kolommen up-to-date zijn. (Zorg er ook voor dat uw klant een regelmatig geplande onderhoudstaak voor de index heeft)
exec sp_msforeachtable "DBCC DBREINDEX('?')"
go
exec sp_msforeachtable "UPDATE STATISTICS ? WITH FULLSCAN, COLUMNS"
go
Dit is de canonieke referentie:traag in de toepassing, snel in SSMS?
Als het probleem nog steeds bestaat na het opnieuw opbouwen van indexen en het bijwerken van statistieken, dan heb je een paar opties:
-
Gebruik dynamische SQL (maar lees dit eerst:The Curse and Blessings of Dynamic SQL)
-
Gebruik
OPTIMIZE FOR
-
Gebruik
WITH(RECOMPILE)