sql >> Databasteknik >  >> RDS >> Mysql

Följande fråga tar för lång tid att köra. Hur man optimerar det

Jag tror att du kan använda

istället för 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;

För att visa totalt antal filmer per år tillsammans med ovanstående utdata.

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. Skapa ett SQL Server Agent Job med SSMS

  2. Felaktig syntax nära nyckelordet 'med'...föregående påstående måste avslutas med semikolon

  3. PostgreSQL-uppdateringar med flera rader i Node.js

  4. SQL hur gruppera efter räkenskapskvartal och år med ett datumfält