Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/01/2016, 10:08
karimbo
 
Fecha de Ingreso: noviembre-2015
Ubicación: Buenos Aires
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Mejorar el SP, para actualizar si existe un registro, sino insertar

Hola amigos, tengo este SP que me funciona bien, pero el tema es que me dijeron que no es performance y que debo mejorarlo.
Ya lo revisé y no le encuentro la vuelta, me pueden ayudar cómo debo mejorarlo.
La idea de este SP es si un Aula o Curso no tiene un horario definido entonces realizar un insert o de lo contrario update.

Código SQL:
Ver original
  1. CREATE PROCEDURE HORARIO_AULA_ACTUALIZAR_INSERTAR
  2. @Aula_Id INT,
  3. @Lunes BIT,
  4. @Martes BIT,
  5. @Miercoles BIT,
  6. @Jueves BIT,
  7. @Viernes BIT,
  8. @HoraDesde DATETIME,
  9. @HoraHasta DATETIME
  10. AS
  11. BEGIN
  12.     IF ((SELECT COUNT(hc.Id) FROM HORARIO_AULA ha WHERE ha.Aula_id =     @Aula_Id ANDha.Activo = 1) > 0)
  13.     BEGIN
  14.         UPDATE HORARIO_AULA SET
  15.                Lunes = @Lunes
  16.               ,Martes = @Martes
  17.               ,Miercoles = @Miercoles
  18.               ,Jueves = @Jueves
  19.               ,Viernes = @Viernes
  20.               ,Sabado = @Sabado
  21.               ,HoraDesde = @HoraDesde
  22.               ,HoraHasta = @HoraHasta
  23.          WHERE Aula_Id = @Aula_Id AND
  24.                Activo = 1
  25.     END
  26.     ELSE
  27.     BEGIN
  28.         DECLARE @Maximo_Id BIGINT
  29.         SELECT @Maximo_Id = ISNULL((COUNT(Id)+1), 1) FROM HORARIO_AULA
  30.        
  31.         INSERT INTO HORARIO_AULA (Id, Aula_Id, Lunes, Martes, Miercoles,   Jueves, Viernes, HoraDesde, HoraHasta, Activo)
  32.                                
  33.         VALUES (@Maximo_Id, @Aula_Id, @Domingo, @Lunes, @Martes, @Miercoles, @Jueves,  @Viernes, @HoraDesde, @HoraHasta, 1)
  34.     END
  35. END

Saludos,