Aller au contenu

Index dans une requête


antouane

Sujets conseillés

Hello

suite a des problemes de ralentissement serveur, je suis en train d essayer d optimiser le mieux possible mes requetes

je suis sur MySQL 3

voici une des requetes que je retrouve dans mon slow-query.log

SELECT count( * ) AS PAGE
FROM ANNONCES a, DEPARTEMENT b, REGION c, AGENCES d
WHERE a.IDDEPARTEMENT = b.IDDEPARTEMENT
AND b.IDREGION = c.IDREGION
AND d.IDAGENCE = a.IDAGENCE
AND a.ACTIF =1
AND b.ACTIF =1
AND c.ACTIF =1
AND c.IDREGION = '16'
AND b.IDDEPARTEMENT LIKE '%'
AND (
(
NOT (
a.DESCRIPTIONLONGUE = ''
)
)
OR (
a.LOCA =1
)
)
AND d.ACTIF =1
ORDER BY DATE DESC

voici le explain :

 table	   type	   possible_keys	   key	   key_len	   ref	   rows	   Extra
c const PRIMARY,ACTIF PRIMARY 8 const 1
a ALL IDDEPARTEMENT,IDAGENCE,ACTIF,LOCA NULL NULL NULL 8224 where used
b eq_ref PRIMARY,IDREGION,ACTIF PRIMARY 8 a.IDDEPARTEMENT 1 where used
d eq_ref PRIMARY,ACTIF PRIMARY 8 a.IDAGENCE 1 where used

je ne comprends tres bien comment cela marche

j ai bien mes index sur tous les champs apres le WHERE

peut etre que c est un cas particulier car c est un COUNT*

merci de m eclairer

Lien vers le commentaire
Partager sur d’autres sites

en fait j ai un :

AND b.IDDEPARTEMENT LIKE '$variable'%

donc quand $variable est vide, cela donne le LIKE %

effectivement ce n'est pas tres propre, je vais donc arranger ca

merci

je vais regarder du cote des INNER JOIN egalement

thanx

Lien vers le commentaire
Partager sur d’autres sites

Tu peux aussi supprimmer la table region de ta requete qui ne sert à rien, et la jointure entre region et departement.

Dans ta requete tu remplace c.IDREGION = 16 par b.IDREGION = 16

Modifié par Spidetra
Lien vers le commentaire
Partager sur d’autres sites

yes

merci du conseil

c est vrai que ce n est qu un count * donc je n ai pas besoin apres dans mes traitements de la table Region

par contre j'ai quand meme :

AND c.ACTIF =1

il faut que je m assure que pour toutes ces lignes, ma REGION c n'est pas desactivee, et ca je ne peux pas le voir juste avec la table Departement

donc je pense qu il faut que je garde quand meme Region dans cette jointure il me semble

Modifié par antouane
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...