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

Ayuda para optimizar una consulta SQL

Estas en el tema de Ayuda para optimizar una consulta SQL en el foro de Mysql en Foros del Web. Hola! Tengo una tabla donde guardo los siguientes campos: Fabricante, RefProducto. El caso es que me gustaria saber que productos tienen en comun 2 fabricantes ...
  #1 (permalink)  
Antiguo 17/02/2011, 01:33
 
Fecha de Ingreso: marzo-2008
Mensajes: 170
Antigüedad: 16 años, 1 mes
Puntos: 0
Ayuda para optimizar una consulta SQL

Hola!

Tengo una tabla donde guardo los siguientes campos: Fabricante, RefProducto.

El caso es que me gustaria saber que productos tienen en comun 2 fabricantes que yo elija, para ello creo esta consulta:

Código:
SELECT RefProducto FROM inventario WHERE (idfabricante = '92') AND (idfabricante = ANY (SELECT idfabricante FROM inventario WHERE (RefProducto = '93')))
En este caso quiero decirle a SQL que me de las referencias de productos iguales del fabricante 92 y 93.

El problema es que cuando hay 200 registros va bien, cuando tengo mas de 10.000 va lento de cojones... con 15.000 registros tarda 24s la peticion...

Pienso que, o bien hay una forma mas rapida de realizar la consulta, o bien, se debe realizar de otra forma...

¿Algun experto me puede ayudar?
  #2 (permalink)  
Antiguo 17/02/2011, 03:38
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: Ayuda para optimizar una consulta SQL

Prueba con algo así:

Código SQL:
Ver original
  1. SELECT RefProducto, COUNT(*) AS B
  2. FROM inventario
  3. WHERE idfabricante = '92'
  4. OR idfabricante = '93'
  5. GROUP BY RefProducto
  6. HAVING B > 1
  #3 (permalink)  
Antiguo 17/02/2011, 14:13
 
Fecha de Ingreso: marzo-2008
Mensajes: 170
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Ayuda para optimizar una consulta SQL

Heimish va cojonuda la consulta, mucho mas rapido. La verdad que las subconsulta era una mala decision para lo que queria hacer...

Con mi consulta, en 35.000 registros y 500 referencias en comun tardaba 16,370s, con la tuya 0,0142s

Brutal, cada dia alucino mas con le MySQL.

Muchas gracias tio, estaba claro que un tio que tiene un avatar de bob esponja sabe lo que se hace ;)

Etiquetas: 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:49.