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

CURSORES: Como puedo hacer esta consulta con cursore

Estas en el tema de CURSORES: Como puedo hacer esta consulta con cursore en el foro de Mysql en Foros del Web. Hola a todos, me gustaría saber como puedo hacer esta consulta con cursores. 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) ...
  #1 (permalink)  
Antiguo 16/12/2010, 14:05
 
Fecha de Ingreso: noviembre-2010
Mensajes: 25
Antigüedad: 13 años, 5 meses
Puntos: 0
Pregunta CURSORES: Como puedo hacer esta consulta con cursore

Hola a todos, me gustaría saber como puedo hacer esta consulta con cursores.

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
)

De antemano, Gracias!!!
  #2 (permalink)  
Antiguo 16/12/2010, 16:07
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: CURSORES: Como puedo hacer esta consulta con cursore

Podrías explicarnos para qué necesitas los cursores en esta consulta?

saludos
Leo
  #3 (permalink)  
Antiguo 16/12/2010, 17:28
 
Fecha de Ingreso: noviembre-2010
Mensajes: 25
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: CURSORES: Como puedo hacer esta consulta con cursore

Hola Leo!

xq la consulta es sumamente lenta y estoy checando opciones.

Muchas gracias!
  #4 (permalink)  
Antiguo 17/12/2010, 11:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: CURSORES: Como puedo hacer esta consulta con cursore

La consulta no es óptima. Muestra las tablas que tienes y qué dato es el que necesitas. Reescribiendo la consulta probablemente obtendrás un mejor resultado.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 17/12/2010, 11:07
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: CURSORES: Como puedo hacer esta consulta con cursore

Hola de nuevo anayazti, los cursores difícilmente te van a ayudar a mejorar el rendimiento de tu consulta. Estuve analizando lo que pusiste, pero no termino por entender qué es lo que estás tratando de obtener. Según yo, lo que pretendes obtener son los datos relacionados con la mínima nota_folio. Igual y si esto no es correcto creo que deberías decirnos qué es lo que pretendes obtener para poder date alguna otra opción.

por lo pronto puedes probar con esto a ver si te arroja los resultados que deseas y sobre todo esperando que mejore el tiempo de respuesta


Código MySQL:
Ver original
  1. SELECT nota.clie_clave, nota.enviar, cliente.tel_clie, ciudad.nombre_ciu, estado.edo
  2. FROM nota
  3. (
  4. SELECT min(nota_folio) as min_nota_folio FROM nota
  5. ) T ON T.min_nota_folio = nota.nota_folio
  6. INNER JOIN cliente ON
  7. cliente.clie_clave = nota.clie_clave
  8. INNER JOIN ciudad ON  
  9. ciudad.cve_pais = cliente.pais_clave AND
  10. ciudad.cve_ciu = cliente.cve_ciu
  11. INNER JOIN estado ON
  12. estado.edo_clave = ciudad.cve_edo

Otro detalle a cuidar es que tengas definidas indices en tus tablas, para que las búsquedas se hagan más rápidamente.

Saludos
Leo.
  #6 (permalink)  
Antiguo 28/12/2010, 11:40
 
Fecha de Ingreso: noviembre-2010
Mensajes: 25
Antigüedad: 13 años, 5 meses
Puntos: 0
De acuerdo Respuesta: CURSORES: Como puedo hacer esta consulta con cursore

Hola LEO!
Gracias por la repuesta!
Por fin supe como optimizar el tiempo de respuesta.

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 *


Y un consejo para todos, revisen * sendyourquery.com!

saludos!!

Etiquetas: cursor, 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 17:06.