En el caso de los STORED PROCEDURES que son exclusivamente para mostrar
información se deberán evitar usar lógicas como la siguiente :
Create Proc UP_SEL_LEER
@X tinyint,
@Y char(3) as
if @X=1
Select * from tabla
Else
Select * from tabla where codigo = @Y
No es óptimo crear STORED PROCEDURES de ese tipo dado que el SQL
guarda una estadística de ejecución cada vez que se use un
procedimiento, esto quiere decir, que si la primera vez se le pasó el
parámetro @X = 1, el SQL no empleará índices para el SELECT, si se
le pasa el @X = 2 en el cual deberá leer un código en particular el
SQL tampoco usará índices debido a las estadísticas guardadas en la
ejecución anterior.
En caso sea necesario trabajar con este tipo de STORED PROCEDURES
deberán ser creados de la siguiente forma :
Create Proc UP_SEL_LEER
@X tinyint,
@Y char(3)
WITH RECOMPILE
as
if @X=1
Select * from tabla
Else
Select * from tabla where codigo = @Y
Leer las respuestas