Produkty - z niej potrzebuję ID produktu (w bazie 6000 rekordów)
Dokumenty - dokumenty do produktów - potrzebuję status dokumentu ( w bazie ok 5000 rekordów)
Zamówienia - tutaj też potrzebuje tylko ID zamówienia jeśli istnieje do danego produktu ( w bazie około 15 000 rekordów)
SELECT produkty.id, dokumenty.STATUS, zamowienia.id FROM produkty LEFT JOIN dokumenty ON dokumenty.product=produkty.id LEFT JOIN zamowienia z ON produkty.id=zamowienia.product WHERE (zamowienia.id=NULL OR dokumenty.STATUS!='ACCEPTED') GROUP BY produkty.id
Pokrótce: Wyciągam tylko te produkty, które nie mają zamówienia lub dokument nie jest zaakceptowany
Zapytanie działa w miarę poprawnie, jest to lekkich poprawek bo dokumentów moze być więcej niż jeden i trzeba sprawdzić czy ostatni jest zaakceptowany, ale ważniejszym problemem jest to, że
takie zapytanie SQL robi w okolo 2 minuty. Macie jakieś pomysły jak to zoptymalizować? Pozdrawiam.