Jump to content

Index dans une requête


Recommended Posts

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

Link to post
Share on other 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

Link to post
Share on other 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

Edited by Spidetra
Link to post
Share on other 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

Edited by antouane
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...