Ik zit met een klein performance probleem.
Ik heb 3 tabellen: A, B & C
Tabel structuur:
A
id
..
..
B
id
fk(fk naar A many-to-one)
i (de counter die gecheckt moet worden)
..
C
fk(fk naar B many-to-one)
i
Ik wil alle informatie terug krijgen van A met de volgende beperking:
- In B of C moet er 1 row zijn welke i > 0
Nu heb ik de volgende query:
Deze query werkt wel alleen is veel te traag op grote hoeveelheden data. Heeft iemand een helder idee hoe ik de subquery zou kunnen vervangen/verbeteren?
De structuur van de database is niet te veranderen.
Ik heb 3 tabellen: A, B & C
Tabel structuur:
A
id
..
..
B
id
fk(fk naar A many-to-one)
i (de counter die gecheckt moet worden)
..
C
fk(fk naar B many-to-one)
i
Ik wil alle informatie terug krijgen van A met de volgende beperking:
- In B of C moet er 1 row zijn welke i > 0
Nu heb ik de volgende query:
code:
1
| SELECT * FROM A WHERE A.id IN (SELECT DISTINCT B.fk FROM B LEFT OUTER JOIN C ON B.id = C.fk WHERE (B.i > 0 OR C.i > 0)) |
Deze query werkt wel alleen is veel te traag op grote hoeveelheden data. Heeft iemand een helder idee hoe ik de subquery zou kunnen vervangen/verbeteren?
De structuur van de database is niet te veranderen.