Mezők, amik nincsenek egy másik táblában
Sziasztok!
Elég bénaság, de rá se tudok nagyon keresni a kérdésemre. Szóval van két tábla, mindkettőben van egy id oszlopba, jelen esetben id/alkatreszid (megegyeznek). azok az elemek kellenének, amik nincsenek a másik táblában...
SELECT * FROM alkatreszek WHERE id NOT IN (SELECT alkatreszid FROM kapcsolatok)
Ez elvileg így jó lenne, csakhát a subquery lassú. Az alkatrészek tábla 9500 soros, a kapcsolatok több millió. Az "id" primary key és mindjárt rakok az alkatreszid-re is indelést, csak annyira belassult a rendszer a lekérdezéstől, hogy kifagy az egész phpmyadmin.
Meg lehetne oldani a lekérdezést subquery nélkül?
Köszönöm szépen!
■ Elég bénaság, de rá se tudok nagyon keresni a kérdésemre. Szóval van két tábla, mindkettőben van egy id oszlopba, jelen esetben id/alkatreszid (megegyeznek). azok az elemek kellenének, amik nincsenek a másik táblában...
SELECT * FROM alkatreszek WHERE id NOT IN (SELECT alkatreszid FROM kapcsolatok)
Ez elvileg így jó lenne, csakhát a subquery lassú. Az alkatrészek tábla 9500 soros, a kapcsolatok több millió. Az "id" primary key és mindjárt rakok az alkatreszid-re is indelést, csak annyira belassult a rendszer a lekérdezéstől, hogy kifagy az egész phpmyadmin.
Meg lehetne oldani a lekérdezést subquery nélkül?
Köszönöm szépen!
grat
join itt is megy
SELECT * FROM alkatreszek LEFT JOIN kapcsolatok ON alkatreszek.id=kapcsolatok.alkatreszid WHERE kapcsolatok.alkatreszid IS NULL
Szerintem :)
működik
Nincs mit
mysql?
Anno mi is szívtunk azzal, hogy van/volt egy bug mysql-ben, ami ha IN (SELECT .... ) -es subquery-t csináltál, akkor nagyon lassan futott le.
Doksi:
http://dev.mysql.com/doc/refman/4.1/en/subquery-restrictions.html
A bug:
http://bugs.mysql.com/bug.php?id=9090
Megoldási javaslat:
http://www.xaprb.com/blog/2006/04/30/how-to-optimize-subqueries-and-joins-in-mysql/