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

Como puedo optimizar esta consulta

Estas en el tema de Como puedo optimizar esta consulta en el foro de Mysql en Foros del Web. Hola, hola!! Esta consulta me arroja los resultados, que quiero (una consulta que no me duplique registros por clave del cliente, con el distinct lo ...
  #1 (permalink)  
Antiguo 15/12/2010, 18:00
 
Fecha de Ingreso: noviembre-2010
Mensajes: 25
Antigüedad: 14 años
Puntos: 0
Como puedo optimizar esta consulta

Hola, hola!!

Esta consulta me arroja los resultados, que quiero (una consulta que no me duplique registros por clave del cliente, con el distinct lo hago, pero como el campo nota.enviar tiene diferentes valores me los toma en cuenta y los repite).

Pero tarda demasiado y quisiera optimizarlo, agradecería su ayuda!

SELECT nota.clie_clave,nota.enviar,
cliente.tel_clie,
ciudad.nombre_ciu,
estado.edo

FROM nota,cliente,ciudad,estado

WHERE nota_folio=
(
SELECT min(nota_folio)
FROM nota
WHERE notaclie_clave = cliente.clie_clave
AND ciudad.cve_edo = estado.edo_clave
AND ciudad.cve_pais = cliente.pais_clave
AND ciudad.cve_ciu = cliente.cve_ciu
)

Gracias!!!
  #2 (permalink)  
Antiguo 28/12/2010, 11:44
 
Fecha de Ingreso: noviembre-2010
Mensajes: 25
Antigüedad: 14 años
Puntos: 0
Respuesta: Como puedo optimizar esta consulta

Esta es mi consulta original completa:

SELECT nota.cust_id,
nota.enviar,
cust.tel_cust,
cd.nombre_ciu,
state.st

FROM nota,cust,cd,state

WHERE nota_folio=
(
SELECT min(nota_folio)
FROM nota
WHERE nota.cust_id = cust.cust_id
AND cd.id_st = state.st_id
AND cd.id_pais = cust.pais_id
AND cd.id_ciu = cust.id_ciu
AND state.st_id = cust.st_id
AND state.pais_id = cust.pais_id
AND nota.fecha BETWEEN '17/08/1996' AND '10/12/2010')
)


Quedando optimizada de la siguente manera:
Crear un índice en la consulta
Tabla: nota
Indice: fecha

SELECT nota.cust_id,
nota.enviar,
cust.tel_cust,
cd.nombre_ciu,
state.st

FROM nota,cust,cd,state
Where cd.id_st = st.st_id
And cd.id_pais = cust.pais_id
And cd.id_ciu = cust.id_ciu
And state.st_id = cust.pobla_id
And state.pais_id = cust.pais_id
And (nota_folio =
(Select min(nota_folio)
From factura
Where nota.cust_id = cust.cust_id
And nota.fecha BETWEEN '17/08/1996' AND '10/12/2010'))
And nota.fecha BETWEEN '17/08/1996' AND '10/12/2010'
And nota.cust_id = cust.cust_id*

sendyiurquery.com

Etiquetas: consulta, optimización, sql
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 15:50.