Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/08/2008, 13:31
Avatar de Lord Kazuky
Lord Kazuky
 
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 17 años, 10 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. ;)"