MySQL Forums
Forum List  »  Spanish

Detectar repeticiones entre dos tablas
Posted by: Jorge Arévalo
Date: December 18, 2007 11:19AM

Lo primero de todo, quería saludar a todo el mundo, ya que soy nuevo.

Tengo un problema con una consulta que no termina de salirme:

Tengo dos tablas idénticas , T1 y T2, con los mismos campos (campos x, y de tipo double, campo z de tipo int. No hay claves primarias). T1 contiene n filas, y T2 m filas, siendo m > n. Hay n filas de T2 que son las mismas que las n filas de T1. El resto de filas de T2 (m - n filas), son las que me interesan.

Quiero una query que me permita conseguir esas m - n filas no comunes. Es decir, las filas en las que T2 se diferencia de T1. He de decir que, a pesar de no haber claves primarias (no es culpa mía, y no hay posibilidad de añadirlas), no hay dos filas repetidas (es decir, con x, y, z iguales) en ningún caso.

He probado con una query como esta:

select *
from T2 t2
where concat(t2.x, t2.y, t2.z) not in (select concat(x,y,z) from T1)

Es la única forma en la que se me ocurrio que se podía ver si una fila de T2 estaba o no en T1. El problema es que son tablas moderadamente grandes (~100mil registros), y una consulta como esa tarda demasiado, ya que ha de concatenar datos (que es algo que seguramente consuma mucho tiempo) y además, para cada una de las ~100mil filas de T2, compararlas con todas las filas de T1.

¿Hay alguna forma de hacer esto que sea razonable en tiempo?

Muchas gracias por anticipado, un saludo

Options: ReplyQuote


Subject
Views
Written By
Posted
Detectar repeticiones entre dos tablas
4430
December 18, 2007 11:19AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.