ugrás a tartalomhoz

Mezők, amik nincsenek egy másik táblában

TIV · 2009. Okt. 14. (Sze), 16.26
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!
 
1

grat

TIV · 2009. Okt. 14. (Sze), 16.30
jól van, sorok helyett mezőket írtam, csak gratulálni tudok magamnak. (tudja valaki javítani?) bár lehet így több fórumozót vonz a kérdésem.:))
2

join itt is megy

gphilip · 2009. Okt. 14. (Sze), 17.07
Hali!

SELECT * FROM alkatreszek LEFT JOIN kapcsolatok ON alkatreszek.id=kapcsolatok.alkatreszid WHERE kapcsolatok.alkatreszid IS NULL

Szerintem :)
4

működik

TIV · 2009. Okt. 19. (H), 12.17
Köszönöm, jól működik, és egész gyors is!
5

Nincs mit

gphilip · 2009. Okt. 19. (H), 12.52
:-)
3

mysql?

krisy · 2009. Okt. 17. (Szo), 10.40
Milyen adatbázis van alatta, 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/