Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Optimizar un Procedimiento...

Estas en el tema de Optimizar un Procedimiento... en el foro de SQL Server en Foros del Web. Holas, Soy nuevo en esto de las BD... tengo un procedimiento que de debe traer los registros de acuerdo al parametro del nombre completo, el ...
  #1 (permalink)  
Antiguo 12/08/2011, 11:08
 
Fecha de Ingreso: agosto-2011
Mensajes: 2
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta Optimizar un Procedimiento...

Holas,

Soy nuevo en esto de las BD... tengo un procedimiento que de debe traer los registros de acuerdo al parametro del nombre completo, el cual está dividido en 4 campos, primer nombre, segundo nombre... el procedimiento al parecer me está funcionando bien, pero está demorando bastante... les coloco este para ver si me pueden decir de que manera optimizarlo. Agradezco toda la colaboración posible!!!
ALTER PROCEDURE [dbo].[Cal_D_Adms_PaciBuscNombComp]

@pvNC AS VARCHAR(200)= NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT @pvNC = '%'+UPPER(+LTRIM(RTRIM(@pvNC)))+'%'
Select Distinct
yIdPaciente,
vIdentificacion,
tIdent,
vPNombre,
vSNombre,
vPApellido,
vSApellido,
vGenero,
CONVERT(DATE,dFechaNacimiento) AS dFechaNacimiento,
FechaIngreso,
Sede,
Bloque,
Piso,
servicio,
CamaID
FROM
(
select Distinct
PA.yIdPaciente,
PA.vIdentificacion,
PA.iIdTipoIdentificacion,
PA.vPNombre,
PA.vSNombre,
PA.vPApellido,
PA.vSApellido,
PA.vGenero,
PA.dFechaNacimiento,
i.vNombre AS tIdent,
AD.FechaIngreso,
SE.Sede,
AD.Bloque,
AD.Piso,
CA.Ubicacion as servicio,
AD.CamaID,
PA.vPNombre+' '+PA.vSNombre+' '+PA.vPApellido+' '+PA.vSApellido as NombreCompleto,
FROM dbo.D_Adms_Paciente PA
INNER JOIN dbo.Tbl_Admision AD ON AD.NroIdentificacion = PA.vIdentificacion
INNER JOIN dbo.Tbl_Cama CA ON CA.CamaID = AD.CamaID
INNER JOIN dbo.Tbl_Cama C1 ON CA.Piso = AD.Piso
INNER JOIN dbo.Tbl_Servicio2 SV ON CA.Ubicacion = SV.Servicio
INNER JOIN dbo.Tbl_Piso p ON p.ID = CA.Piso
INNER JOIN dbo.Tbl_Bloques BL ON BL.ID = CA.Bloque
INNER JOIN dbo.Tbl_Sede SE ON SE.iIdSede = BL.iIdSede
INNER JOIN dbo.D_Config_TipoListaItem i ON PA.iIdTipoIdentificacion = i.iIdTipoListaItem


INNER JOIN(
SELECT DISTINCT MAX(j.FechaIngreso) FECH
FROM
dbo.D_Adms_Paciente a
INNER JOIN dbo.Tbl_Admision j ON j.NroIdentificacion = a.vIdentificacion

GROUP BY a.vIdentificacion )PIJ ON PIJ.FECH = AD.FechaIngreso
)AS PF
where
(NombreCompleto like @pvNC COLLATE Modern_Spanish_CI_AI)
order by FechaIngreso desc
END
  #2 (permalink)  
Antiguo 12/08/2011, 11:11
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Optimizar un Procedimiento...

Antes de ejecutar tu procedimiento en un analizador de consultas, pidele que te muestre la parte de lecturas.

SET STATISTICS IO ON
EXEC ....................

Revisa la parte de LECTURAS y corriges.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 12/08/2011, 11:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Optimizar un Procedimiento...

A parte de lo que comenta iislas otros puntos importantes para el rendimiento:

Estan idexadas tus tablas?
Tienes tanto cluster index como non cluster index?
Dichos indices estan tanto en el select como en el where?
Ya revisaste tu execution plan(ctrl+L) y viste que no te este haciendo operaciones de mas?


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: procedimiento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:40.