Incearca si asa:
SELECT ov_filme.*, ov_detalii_film.*
FROM ov_filme AS ov_filme
INNER JOIN ov_detalii_film AS ov_detalii_film
ON ov_filme.ID_film=ov_detalii_film.id_film and $construct AND $construct_regizor AND $construct_scenarist AND $construct_tip_film AND $construct_clasificare
ORDER BY `ov_filme`.`ID_film` DESC
Experienta mea e bazata in mare parte pe Microsoft SQL, dar presupun ca toate bazele de date functioneaza la fel.
Adica prima data se obtine un set realizat din join, care evident contine toata lista de filme, iar acest set mare este filtrat apoi de clauza where.
In principiu, Microsoft SQL stie sa-ti optimizeze singur query-ul si sa-ti urce clauzele din where in on. In cazul tau, in functie de ce server folosesti e posibil sa nu.
Pasul 2 este sa creezi indecsi pe toate campurile pe care le filtrezi.



Răspunde cu citat