sql >> Databáze >  >> RDS >> Mysql

Provedení následujícího dotazu trvá příliš dlouho. Jak to optimalizovat

Myslím, že můžete použít

místo JOIN.

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;

Zobrazení celkového počtu filmů za rok spolu s výše uvedeným výstupem.

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. Přehled MariaDB Xpand (dříve ClustrixDB)

  2. Pochopení indexů v MySQL:Část druhá

  3. Získání automaticky generovaného klíče z vložení řádku na jaře 3 / PostgreSQL 8.4.9

  4. Jak vypočítat místo na disku používané tabulkou MySQL z datových typů sloupců a počtu řádků?