sql >> Database >  >> RDS >> Mysql

Volgende query duurt te lang om uit te voeren. Hoe het te optimaliseren?

Ik denk dat je

. kunt gebruiken

in plaats van DOE MEE.

SELECT m.year, COUNT(m.id) FROM movies m 
where 
exists (select * from roles r where r.movie_id=m.id and 
exists(select * from actors a where a.id=r.actor_id and a.gender='F'))
group by  m.year;

Om het totale aantal films per jaar samen met de bovenstaande uitvoer weer te geven.

select t1.year,t1.count,t2.total from 
(
SELECT m.year as year, COUNT(m.id) as count FROM movies m 
where exists (select * from roles r where r.movie_id=m.id and exists(select * from actors a where a.id=r.actor_id and a.gender='F'))
group by  m.year
)t1 
join
(select year,count(m.id) as total from movies m group by m.year) t2
on t1.year=t2.year;


  1. MySQL-volgorde op relevantie

  2. SQL-updatequery met behulp van joins

  3. Tabel wijzigen om de standaardwaarde van de kolom te wijzigen

  4. Point-in-Time Recovery van MySQL- en MariaDB-gegevens uitvoeren met ClusterControl