2010-09-24 5 views
0

C'est ma requête quelqu'un peut me dire pourquoi cette requête qui prend excute beaucoup de temps ...mysql jointure gauche requête prend beaucoup de temps pour exécuter

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 

Voici le tableau expliquer

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  
+0

S'il vous plaît formater votre SQL appropriée et fournir quelques informations sur votre base de données. La sortie de 'EXPLAIN SELECT ...' est le meilleur pari. – wuputah

+0

@ Stargazer712: merci de reformater ça, j'avais des vertiges. – egrunin

+0

Combien de temps? Nombre d'éléments dans vos tableaux? Avez-vous créé des index sur les champs film_id dans votre base de données? –

Répondre

2

Juste une supposition sauvage, mais vous avez besoin probablement des indices sur ces trois clés étrangères:

gf_film_views.film_id 
gf_film_poster.film_id 
gf_film_rate.film_id 
0

faire vos champs d'identification sont indexés et son temps d'exécution diminue.

+3

Je pense que vous vouliez dire * diminuer * ... – egrunin

+0

@egrunin thx, yah vous avez raison. –

0

Je suppose que les champs de jointure sont PK ou FK et devraient donc déjà être indexés. A ce moment, je pense qu'il y a énormément de lignes et/ou le matériel sur lequel la base de données fonctionne n'est pas très fort.

Questions connexes