Tengo 2 tablas (A y B) con las mismas teclas principales. Quiero seleccionar toda la fila que están en A y no en B. Las siguientes obras:Mysql selecciona dónde no está en la tabla
select * from A where not exists (select * from B where A.pk=B.pk);
sin embargo, parece bastante malo (~ 2 segundos en sólo 100k filas en A y en B 3-10k menos)
¿Hay una manera mejor de ejecutar esto? Tal vez como una izquierda unirse?
select * from A left join B on A.x=B.y where B.y is null;
En mis datos esto parece funcionar un poco más rápido (~ 10%) pero ¿qué pasa en general?
Qué quiere decir que tiene 100k filas de la tabla A y 100k filas en la tabla B? O simplemente alrededor de 300 filas en cada tabla, lo que significa 100.000 escaneos de fila (o, con suerte, escaneos de índice). – ChrisInEdmonton