26/08/2008, 13:31
|
| | | Fecha de Ingreso: junio-2006 Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 18 años, 6 meses Puntos: 5 | |
Respuesta: buscar valores repetidos en una tabla Bueno creo que el principal problema en esa consulta es el Operador IN, ya que por cada registro de zona1 se compara temp con todos los datos de la otra consulta.
Es decir, si la consulta: (SELECT temp FROM zona1 HAVING COUNT(templ) >1 ) te devuelve 500.000 registros. y 'zona1' tiene 1.000.000 de registros, se esta comparando cada uno de esos '1.000.000' contra los otros '500.000' unas '500.000' veces...
(Creo que es asi) En cualquier caso es una consulta pesada.
Lo que se puede hacer tratar el resultado de la consulta como una tabla más: SELECT A.* FROM zona1 AS A,
( SELECT t1.temp FROM(
SELECT temp, count(temp) AS numero FROM zona1 GROUP BY temp
) AS t1
WHERE t1.numero > 1
) AS t2
WHERE A.temp = t2.temp
La parte en negrita es la que busca los 'temp' con un numero de registros mayor a 1
Yo hice la prueba con tablas de mas o menos 400.000 registros. Haber si esta te funciona mejor.
Eso si, verifica que que el campo 'temp' sea un indice en la tabla.
Tambien en vez de traer todos los registros de zona (A.*), solo traes los que necesitas.
Lo otro es configurar el servidor MySQL para que utilice más memoria (si te puedes dar ese lujo)
__________________ Saludos. "Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)" |