sql >> Base de Datos >  >> RDS >> Sqlserver

Tiempo de espera de consulta de SQL Server según la cláusula Where

El problema que está experimentando se debe (casi con certeza) a un plan de consulta en caché, que es apropiado para algunas versiones de los parámetros pasados ​​a la consulta, pero no para otros (también conocido como análisis de parámetros).

Esta es una ocurrencia común y, a menudo, empeora debido a estadísticas desactualizadas y/o índices muy fragmentados.

Primer paso :asegúrese de haber reconstruido todos sus índices y de que las estadísticas de las columnas no indexadas estén actualizadas. (Además, asegúrese de que su cliente tenga un trabajo de mantenimiento de índice programado regularmente)

exec sp_msforeachtable "DBCC DBREINDEX('?')"
go

exec sp_msforeachtable "UPDATE STATISTICS ? WITH FULLSCAN, COLUMNS"
go

Esta es la referencia canónica:¿Lento en la aplicación, rápido en SSMS?

Si el problema persiste después de reconstruir los índices y actualizar las estadísticas, tiene algunas opciones:

  1. Use SQL dinámico (pero lea esto primero:La maldición y las bendiciones de SQL dinámico)

  2. Usa OPTIMIZE FOR

  3. Usa WITH(RECOMPILE)