Bonjour,
J’ai une requête qui fait joindre 14 table pour une recherche dans mon site a l’exécution tout le site devient lourd même pour l’autre utilisateur du site si vous avez une solution pour mon problème je serais ravis et merci d’avance
Bonjour,
J’ai une requête qui fait joindre 14 table pour une recherche dans mon site a l’exécution tout le site devient lourd même pour l’autre utilisateur du site si vous avez une solution pour mon problème je serais ravis et merci d’avance
Qu'est ce qui justifie ces jointures ?
N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP
14 jointures pour une requête ne pose pas de problème.
Il faut regarder le type de jointure (externe, croisée ?), puis voir les indexs, etc.
Bref, il faudrait au moins nous montrer la requête pour essayer d'identifier le "problème" et éventuellement trouver des solutions.
Bonjour,
Merci pour votre réponse, la requête sert a faire une recherche avec plusieurs critère de recherche voici la requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM Table1 a INNER JOIN Table2 t ON a.annonces_type_transaction_id = t.transactions_id AND t.transactions_name = '' INNER JOIN Table3 m ON a.membres_id = m.membres_id INNER JOIN Table4 b ON a.annonces_type_bien_id = b.biens_id AND biens_name = '' INNER JOIN ( SELECT * FROM Table5 l INNER JOIN Table6 v ON l.localisation_ville_id = v.villes_id ) lv ON lv.annonces_id = a.annonces_id INNER JOIN Table7 l ON l.annonces_id = a.annonces_id INNER JOIN Table8 c ON c.annonces_id = a.annonces_id INNER JOIN Table9 ON ie.annonces_id = a.annonces_id INNER JOIN Table10 tr ON tr.annonces_id = a.annonces_id INNER JOIN Table11_financiere cf ON cf.annonces_id = a.annonces_id INNER JOIN Table12 dd ON dd.annonces_id = a.annonces_id INNER JOIN Table13 lp ON lp.annonces_id = a.annonces_id WHERE 1 AND lv.localisation_region_id = 1 AND lv.localisation_departement_id = 1 AND ( lv.villes_name LIKE '%L\'Abergement Clémenciat%' OR lv.ville_zipcode LIKE '%01400%' ) AND a.annonces_disponibilite LIKE '%%' AND ie.interieur_exterieur_etage = '' AND ie.interieur_exterieur_nb_niveau = ' ' AND ie.interieur_exterieur_nb_niveau LIKE '% %' AND ie.interieur_exterieur_date_construction LIKE '%%' AND annonces_validation = 1 AND annonces_publication = 1 AND TO_DAYS(NOW()) - TO_DAYS(annonces_date_expiration) <= 0 GROUP BY a.annonces_id
Salut,
A ta place, je commencerais par modifier la requête comme ci-dessous puis je lancerais un "EXPLAIN" sur la requête. Fais le et donne nous le résultat.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 SELECT * FROM Table1 a INNER JOIN Table2 t ON a.annonces_type_transaction_id = t.transactions_id INNER JOIN Table3 m ON a.membres_id = m.membres_id INNER JOIN Table4 b ON a.annonces_type_bien_id = b.biens_id INNER JOIN ( SELECT * FROM Table5 l INNER JOIN Table6 v ON l.localisation_ville_id = v.villes_id ) lv ON lv.annonces_id = a.annonces_id INNER JOIN Table7 l ON l.annonces_id = a.annonces_id INNER JOIN Table8 c ON c.annonces_id = a.annonces_id INNER JOIN Table9 ON ie.annonces_id = a.annonces_id INNER JOIN Table10 tr ON tr.annonces_id = a.annonces_id INNER JOIN Table11_financiere cf ON cf.annonces_id = a.annonces_id INNER JOIN Table12 dd ON dd.annonces_id = a.annonces_id INNER JOIN Table13 lp ON lp.annonces_id = a.annonces_id WHERE lv.localisation_region_id = 1 AND lv.localisation_departement_id = 1 AND ( lv.villes_name LIKE '%L\'Abergement Clémenciat%' OR lv.ville_zipcode LIKE '%01400%' ) AND a.annonces_disponibilite LIKE '%%' AND ie.interieur_exterieur_etage = '' AND ie.interieur_exterieur_nb_niveau = ' ' AND ie.interieur_exterieur_nb_niveau LIKE '% %' AND ie.interieur_exterieur_date_construction LIKE '%%' AND annonces_validation = 1 AND annonces_publication = 1 AND TO_DAYS(NOW()) - TO_DAYS(annonces_date_expiration) <= 0 AND t.transactions_name = '' AND biens_name = '' GROUP BY a.annonces_id
autre piste d'amelioration tu jointe sur des tables avec comme critere de selection rien la construction de ta requete doit peut pouvoir être ameliorer afin de jointer seulement sur les tables ou il y a un critère de recherche
Stay in Bed .. Save Energy
merci pour votre réponse, je viens de résoudre le problème en réglant la requête et enlever les requête imbriquer en plus mettre les condition dans leur jointure
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager