sql - mysql 左连接查询需要很多时间来执行

标签 sql mysql

这是我的查询,任何人都可以告诉我为什么这个查询需要花费很多时间执行...

select    gf_film.film_id,
          film_name,
          DATE_FORMAT(film_release_date,'%d') as date,
          DATE_FORMAT(film_release_date,'%m') as month_ori,
          DATE_FORMAT(film_release_date,'%M') as month,
          DATE_FORMAT(film_release_date,'%Y') as year,
          film_release_date,
          film_feature,
          film_modify,
          no_of_views,
          original_poster_url,
          (total_value/total_votes) as rate 
from      gf_film left join gf_film_views 
              on gf_film.film_id=gf_film_views.film_id 
          left join gf_film_poster 
              on gf_film.film_id=gf_film_poster.film_id 
          left join gf_film_rate 
              on gf_film.film_id=gf_film_rate.film_id 
order by  rate desc

这是解释表

id select_type table          type   possible_keys key  key_len     ref     rows    Extra
1  SIMPLE      gf_film        ALL    NULL          NULL     NULL    NULL    21434   Using temporary; Using filesort
1  SIMPLE      gf_film_views  eq_ref film_id       film_id  4   go4film.gf_film.film_id     1    
1  SIMPLE      gf_film_poster eq_ref film_id       film_id  4   go4film.gf_film.film_id     1    
1  SIMPLE      gf_film_rate   eq_ref PRIMARY       PRIMARY  4   go4film.gf_film.film_id     1    

最佳答案

只是一个大胆的猜测,但您可能需要这三个外键的索引:

gf_film_views.film_id
gf_film_poster.film_id
gf_film_rate.film_id

关于sql - mysql 左连接查询需要很多时间来执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3790029/

相关文章:

mysql - 统计SQL中每个父元素下每个子元素的评分

php - 在 MySQL 中获取表列名?

php - 尝试使用 PHP 从 2 个数据库获取数据

mysql - SQL 连接名称在结果的其余部分中丢失

SQL 计数每 2 小时分组一次

mysql - SQL大查询优化

mysql - 使用共享主键检索 mysql 中的最后一行

php - SQL 每隔 15 分钟插入一次,大 MySQL 表

MySQL 选择索引列

php - 如何在 mysql 中按已知 id 值排序