Optimizar Query

07/07/2004 - 20:50 por Jorge Eldis | Informe spam
Buenas a todos,

Tengo el sisguiente problema:

Tengo un SELECT el cual me devuelve las llamadas de telefonos de una central
telefonica pero en ese SELECT pongo el nobre del pais que se llamo, asi que
hice una funcion para pasarle el numero y me devuelve el pais.

Esto funciona pero es super lento ya que la lista de paises es grande.

Como pudiera optimizar esto?

Saludos Jorge Eldis

Preguntas similare

Leer las respuestas

#6 ulises
08/07/2004 - 05:03 | Informe spam
Prueba con :

SELECT NumeroOrigen, NumeroDestino, Nombre
FROM TBL_LLAMADAS LEFT JOIN TBL_PAISES
ON NumeroDestino LIKE CodigoPais + '%'

esto asume que no existen claves parecidas en tu tabla TBL_PAISES
(p.e. 51 y 514 ) ya que si eso sucede se producirían duplicidades.

Saludos,
Ulises

On Wed, 7 Jul 2004 20:13:22 -0500, "Jorge Eldis"
wrote:

Mostrar la cita
#7 Jorge Eldis
08/07/2004 - 15:24 | Informe spam
Buenas a todos y muchas gracias por la cooperacion.

Ulises ese es otro problema que existen claves parecidas (51 y 514) y tengo
que aparear los numeros en forma descendente para que funcione ej.

si tengo un numero 514-7654, a ese le corresponde el codigo 514, si el 514
no existiera entonces le corresponderia el 51.

Muchas gracias nuevamente por su tiempo ya llevo semanas en esto tratando de
optimizar por eso hice una funcion que fue lo mas practico y funcional que
vi.

Sigo investigando a ver que resuelvo.

Saludos Jorge Eldis

"ulises" wrote in message
news:
Mostrar la cita
codigos
Mostrar la cita
asi
Mostrar la cita
grande.
Mostrar la cita
#8 Javier Loria
08/07/2004 - 17:21 | Informe spam
Hola:
Prueba con esto.
El siguiente SELECT debe darte el codigo de pais mas largo:
==SELECT Tbl_Llamadas.NumeroOrigen
, Tbl_Llamadas.NumeroDestino
, MAX(Tbl_Paises.CodigoPais) AS CodigoPaisDestino
FROM Tbl_Llamadas
JOIN Tbl_Paises
ON Tbl_Llamadas.NumeroDestino LIKE Tbl_Paises.CodigoPais+'%'
== Si eso es correcto, entonces luego puedes hacer un JOIN entre esta
consulta y los nombres de Paises.
==SELECT Ll.NumeroOrigen
, Ll.NumeroDestino
, Ll.CodigoPaisDestino
, Tbl_Paises.Nombre
FROM (SELECT Tbl_Llamadas.NumeroOrigen
, Tbl_Llamadas.NumeroDestino
, MAX(Tbl_Paises.CodigoPais) AS CodigoPaisDestino
FROM Tbl_Llamadas
JOIN Tbl_Paises
ON Tbl_Llamadas.NumeroDestino LIKE Tbl_Paises.CodigoPais+'%') AS
Ll
JOIN Tbl_Paises
ON Tbl_Paises.CodigoPais=Ll.CodigoPaisDestino
== No se que tal sera el desempeno, pero en principio si la Tabla de Paises
no tiene demasiadas filas debe ser rapido.
Espero te sirva,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Jorge Eldis escribio:
Mostrar la cita
#9 Jorge Eldis
08/07/2004 - 18:45 | Informe spam
Gracis voy a probar a ver como funciona.

Saludos Jorge Eldis

"Javier Loria" wrote in message
news:
Mostrar la cita
AS
Mostrar la cita
Paises
Mostrar la cita
Ads by Google
Search Busqueda sugerida