Ämne: MySQL-fråga
Visa ett inlägg
Oläst 2009-05-19, 15:55 #10
andi andi är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 344
andi andi är inte uppkopplad
Flitig postare
 
Reg.datum: Jun 2006
Inlägg: 344
TROR jag har det.
Med en UNION ALL på båda tabellerna och en koll av hur många gånger en rad förekommer (2 gånger så finns raden i båda tabellerna, 1 gång så finns den bara i tabell1).

Kod:
SELECT count(*) as count, temp.* FROM 

( 
(SELECT DISTINCT id, value FROM table1 WHERE id IN (SELECT id FROM table2) )
UNION ALL 
(SELECT DISTINCT id, value FROM table2 LEFT JOIN table1 ON table2.id = table1.id WHERE table1.value = table2.value) ) 

as temp

GROUP BY temp.id, temp.value HAVING count = 1
I frågan efter "UNION ALL" så gör jag en JOIN med tabell1 eftersom tabell2 ibland kan innehålla rader som inte tabell1 innehåller, då ska dessa rader i tabell2 inte tas med, för då kommer dessa rader ge "count=1" fast de inte ska vara med i resultatet.

Frågan är hur snabb denna fråga är när mängden data växer. Hur är prestandat på "UNION ALL" rent generellt, bevaras eventuella index?
andi är inte uppkopplad   Svara med citatSvara med citat