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

Un While le hace muy pesado al query??

Estas en el tema de Un While le hace muy pesado al query?? en el foro de SQL Server en Foros del Web. Saludos amigos tod@s Miren, no se cómo proceder en estos caso cuando estoy teniendo tiempos de respuesta muy críticos en mi query -sobre los 20 ...
  #1 (permalink)  
Antiguo 30/09/2010, 09:56
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 18 años, 2 meses
Puntos: 0
Un While le hace muy pesado al query??

Saludos amigos tod@s

Miren, no se cómo proceder en estos caso cuando estoy teniendo tiempos de respuesta muy críticos en mi query -sobre los 20 minutos para tan solo 40000 registros; la particularidad es que necesito hacer actualizaciones en esta tabla y para ellos debo barrarme cada registro. En la actualizacion utilizo funciones pejm.: Upper, Max, Min, in, not in, Substring, datediff y cast.

En realidad estas funciones las utilizo a los largo de mi bloque de 800 lineas del DTS.

Otro dato,.. utilizo 6 variables tabla con un campo comúnu en todos ellos, el campo SEC int identity(1,1), que a la vez lo uso como mi Primary Key de esas tablas.. Es buena opción para crear mi indice en este tipo de tablas??


Qué sugerencia me podrian brindar por favor para mejorar estos tiempos??


Ún fragmento de lo comentado...

WHILE @VL_ContA<=@VL_TotalA
BEGIN
SELECT @VL_NUT_A =NUT,@VL_TASK_STEP_CODE_A=TASK_STEP_CODE
FROM @TBL_NUTS_ACTIVIDADES
WHERE SEC=@VL_ContA


--//CALCULO DEL CAMPO: USUARIO EJECUTA
SELECT @VL_DATE_CREATED=MAX(DATE_CREATED)
FROM @TBL_CLE_MONITEREO
GROUP BY NUT, TASK_STEP_CODE, TASK_STATUS
HAVING NUT=@VL_NUT_A
AND TASK_STEP_CODE=@VL_TASK_STEP_CODE_A
AND UPPER(TASK_STATUS)='CLAIMED'

..etc...etc


Agradezco la ayuda amigos del Foro...
PD: Trabajo con SQLServer2005

Att.,
LE
  #2 (permalink)  
Antiguo 30/09/2010, 22:45
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Un While le hace muy pesado al query??

¿Tienes INDICES en tu tabla(s)?
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 01/10/2010, 06:41
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Un While le hace muy pesado al query??

Los unicos indices que tengo en mis variables tablas son las claves primarias IISLAS... ejm

--//Tabla para los Estados
DECLARE @TBL_CATALOGO_ESTADOS TABLE
(
SEC INT IDENTITY(1,1),
CODIGO VARCHAR(25),
NOMBRE VARCHAR(100)
PRIMARY KEY(SEC,CODIGO)
)


O alguna otra opcion para no usar WHILE en SQL? -porque estoy viendo que para nada son eficientes a ala hora de trabajar con grandes datos-
  #4 (permalink)  
Antiguo 01/10/2010, 19:37
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Un While le hace muy pesado al query??

Prueba creando los indices.
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 04/10/2010, 10:14
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Un While le hace muy pesado al query??

Eh ahi el problema IISLAS, ya que al intentar crear indices en una variable tabla, no me deja el SqlServer 2005.

Por ejemplo: intenté algo como esto...


--//Creo tabla para trabajar sobre esta.
DECLARE @TBL_MONITOREO (
SEC INT IDENTITY(1,1),
NUTI VARCHAR(100),
NO_ID VARCHAR(50),
....
TASK_STEP_CODE INT,
TASK_INIT_DATE varchar(50),
CURRENT_STATUS varchar(50),
PRIMARY KEY (SEC,NUTI)
)


create index IDX_TBL_MONITOREO
on DBO.@TBL_MONITEREO
(
TASK_STEP_CODE
)


y el msg de error que me sale es:
"Line 65: Incorrect syntax near '@TBL_CLE_MONITEREO_SLAS_BPM_TMP'."...

Además, rercordando lecturas anteriores me encontré con indicaciones que me decía que no era posible indexar variables tipoi tabla sino solo tablas físicas...

Agradezco tus comentarios, espero tu respuesta Iislas.


Saludos
LE

Etiquetas: pesado, query
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 08:37.