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

Que es mas optimo CASE O UPDATE?

Estas en el tema de Que es mas optimo CASE O UPDATE? en el foro de SQL Server en Foros del Web. Hola buenas tardes amigos, Tengo una consulta bastante grande, en la que varios campos los tengo con CASE (Ejemplo): [CODE] SELECT CASE CAST(SUBSTRING(DES_ATEXPL, 1943, 10) ...
  #1 (permalink)  
Antiguo 08/08/2007, 05:47
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Que es mas optimo CASE O UPDATE?

Hola buenas tardes amigos,

Tengo una consulta bastante grande, en la que varios campos los tengo con CASE (Ejemplo):

[CODE]
SELECT
CASE CAST(SUBSTRING(DES_ATEXPL, 1943, 10) AS INT)
WHEN 0 THEN CAST(0 AS CHAR(1))
WHEN 6020 THEN CAST(1 AS CHAR(1))
WHEN 12030 THEN CAST(2 AS CHAR(1))
WHEN 18040 THEN CAST(3 AS CHAR(1))
WHEN 24050 THEN CAST(4 AS CHAR(1))
WHEN 30060 THEN CAST(5 AS CHAR(1))
ELSE CAST(0 AS CHAR(1))
END AS T_ASISTENCIA_SANITARIA
,

CASE ISNUMERIC(SUBSTRING(DES_ATEXPL, 151, 12))
WHEN 0 THEN CAST(NULL AS SMALLINT)
ELSE CAST(SUBSTRING(DES_ATEXPL, 151, 12) AS SMALLINT)
END AS DURACION_SEGURO
,

CASE SUBSTRING(DES_ATEXPL, 235, 1)
WHEN 'A' THEN 'ANUAL'
WHEN 'S' THEN 'SEMESTRAL'
WHEN 'T' THEN 'TRIMESTRAL'
ELSE NULL
END AS FORMA_PAGO
[CODE]


Y queria preguntar a los expertos que conozcan bien SQL Server si me pueden decir si seria más optimo meter estos resultados previamente en una TTemporal y luego hacer un update de dichos valores con una sentencia o si es mejor dejarlo asi.

Gracias.
__________________
Charlie.
  #2 (permalink)  
Antiguo 08/08/2007, 08:26
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Que es mas optimo CASE O UPDATE?

Es mejor el select...


Código:
SELECT 
CASE CAST(SUBSTRING(DES_ATEXPL, 1943, 10) AS INT)
WHEN 0 THEN '0'
WHEN 6020 THEN '1'
WHEN 12030 THEN '2'
WHEN 18040 THEN '3'
WHEN 24050 THEN '4'
WHEN 30060 THEN '5'
ELSE '0'
END AS T_ASISTENCIA_SANITARIA
,

CASE ISNUMERIC(SUBSTRING(DES_ATEXPL, 151, 12))
WHEN 0 THEN 0
ELSE  CAST(SUBSTRING(DES_ATEXPL, 151, 12) AS SMALLINT)
END AS DURACION_SEGURO
, 

CASE SUBSTRING(DES_ATEXPL, 235, 1) 
WHEN 'A' THEN 'ANUAL'
WHEN 'S' THEN 'SEMESTRAL'
WHEN 'T' THEN 'TRIMESTRAL'
ELSE Null
END AS FORMA_PAGO

Como comentario el tipo Anual, Semestral y Trimestral... seria mejor guardarlo en un campo aparte y tener un catalogo de Forma de pago, de modo que al hacer el select solo hagas el join entre las dos tablas y sea transparente....


Saludos
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 08/08/2007, 08:56
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Que es mas optimo CASE O UPDATE?

Opino lo mismo, de la otra manera cargarías la creacion de la temporal, ademas de que en el insert y el update entiendo debería ir la misma logica de conversion, es un paso más, por lo cual lo mas óptimo a mi parecer el el select....
Saludos!
__________________
Hicimos un pacto con Dios... El no desarrolla Sistemas y nosotros no hacemos milagros....
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 22:15.