|  Optimizacion de QUERY SQL  
  Saludos tengo la siguiente duda..
 estoy haciendo una carga de datos (.dat) a sql a varias tablas especificas... al final decidi trabajar todo con procedimientos almacenados.- en el sentido de que a traves de VB6, voy pasando todos los parametros correspondientes para su insercion o update como corresponde.- uno de los SP es asi:
 
 USE [BD_Cas]
 GO
 /****** Object:  StoredProcedure [dbo].[bd_cas_t_cara_a]    Script Date: 10/19/2010 17:43:48 ******/
 SET ANSI_NULLS ON
 GO
 SET QUOTED_IDENTIFIER ON
 GO
 ALTER PROCEDURE [dbo].[bd_cas_t_cara_a]
 @region smallint,
 @provincia smallint,
 @comuna smallint,
 @folio integer,
 ----
 @c_uv varchar(3),
 @c_tipo_a varchar(2),
 @poblacion varchar(3),
 @dc_manzana varchar(4),
 @c_calle varchar(4),
 @domicilio varchar(6),
 @block varchar(3),
 @depto varchar(4),
 @encuestador smallint,
 @puntaje float,
 @fecha_ap varchar(8)
 as
 declare @folio1 integer
 declare @region1 integer
 declare @provincia1 integer
 declare @comuna1 integer
 SELECT @folio1 = dc_Folio, @region1 = dc_Region, @provincia1 = dc_Provincia, @comuna1 = dc_Comuna FROM t_cara_a WHERE dc_Region = @region AND dc_Provincia = @provincia AND dc_Comuna = @comuna AND dc_Folio = @folio
 
 ----
 declare @urb_rural integer
 set @urb_rural =(SELECT dc_urbano_rural FROM t_calles
 WHERE dc_Region = @region
 AND dc_Provincia = @provincia
 AND dc_Comuna = @comuna
 AND dc_Calle = @c_calle)
 if @urb_rural is null
 begin
 set @urb_rural = 1
 end
 -----------------------------------------------------------------------
 declare @address varchar(6)
 set @address = substring(CONVERT(varchar(8), @domicilio),1,6)
 -----------------------------------------------------------------------
 if @block = ''
 begin
 set @block = 0
 end
 else
 begin
 set @block = substring(convert(varchar(3), @block),1,3)
 end
 if @depto = ''
 begin
 set @depto = 0
 end
 else
 begin
 set @depto = substring(convert(varchar(4), @depto),1,4)
 end
 begin
 if @folio = @folio1 and @region = @region1 and @provincia = @provincia1 and @comuna = @comuna1
 begin
 DELETE t_cara_a where dc_Folio = @folio
 INSERT INTO t_cara_a (DC_region, dc_Provincia, DC_Comuna, DC_Folio, dc_urbano_rural, dc_unidad_vecinal,
 dc_agrup_habit, dc_poblacion, dc_manzana, dc_calle, dg_numero_casa, dg_numero_block_casa, dg_numero_depto_sitio,
 dc_encuestador, di_Ptje_Factor_Total, df_encuesta)
 VALUES (@region, @provincia, @comuna, @folio,@urb_rural, @c_uv, @c_tipo_a, @poblacion, @dc_manzana,
 @c_calle, @address, @block,@depto, @encuestador,@puntaje ,@fecha_ap)
 --------------------------------------------------------------------------
 --UPDATE t_cara_a SET dc_urbano_rural = @urb_rural, dc_unidad_vecinal = @c_uv, dc_agrup_habit = @c_tipo_a,
 --dc_poblacion = @poblacion, dc_manzana = @dc_manzana, dc_calle = @c_calle, dg_numero_casa = @domicilio,
 --dg_numero_block_casa = @block, dg_numero_depto_sitio = @depto, dc_encuestador = @encuestador,
 --di_Ptje_Factor_Total = @puntaje, df_encuesta = @fecha_ap
 --WHERE dc_Region = @region AND dc_Provincia = @provincia AND dc_Comuna = @comuna AND dc_Folio = @folio
 end
 else
 begin
 INSERT INTO t_cara_a (DC_region, dc_Provincia, DC_Comuna, DC_Folio, dc_urbano_rural, dc_unidad_vecinal,
 dc_agrup_habit, dc_poblacion, dc_manzana, dc_calle, dg_numero_casa, dg_numero_block_casa, dg_numero_depto_sitio,
 dc_encuestador, di_Ptje_Factor_Total, df_encuesta)
 VALUES (@region, @provincia, @comuna, @folio,@urb_rural, @c_uv, @c_tipo_a, @poblacion, @dc_manzana,
 @c_calle, @address, @block,@depto, @encuestador,@puntaje ,@fecha_ap)
 end
 
 end
 SET NOCOUNT ON
 
 Ahora mi duda es ... cuando hago la 1era insercion con la Tabla vacia, la insercion la hace super rapido, pero cuando pasa la 2da ronda y inserto anteriormente los datos despues al momento de hacer el update encuentro que se demora mucho... tengo dudas no se si es mejor ocupar un UPDATE o un DELETE/INSERT ..
 
 o si hay alguna forma de optimizar mas el procedimiento almacenado para que corra de mejor forma..
 
 Ojala puedan dejar sus comentarios para poder resolver este enigma para mi .. jaja gracias de antemano a todos.
 Saludos cordiales.
     |