Mysql
 sql >> база данни >  >> RDS >> Mysql

Следващата заявка отнема твърде много време за изпълнение. Как да го оптимизираме

Мисля, че можете да използвате

вместо 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;

За показване на общото количество филми на година заедно с горния резултат.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Колоните char/varchar/text/longtext в MySQL заемат ли пълен размер във файловата система дори за частично запълнени клетки?

  2. Защо INNER JOIN не е равно (!=) да виси завинаги

  3. Полезен PHP клас база данни

  4. как да направя брояч на php статии?

  5. Фатална грешка:Извикване на член функция bind_param() на булева