|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : août 2005 Messages : 7 ![]() |
Bonjour,
Voila, je viens vers vous pour un petit problème d'optimisation de requêtes. J'ai 2 tables : entreprise (env. 6000 enr.) et personnel (env. 10000 enr.) Je souhaite récupérer une table contenant les renseignements des entreprises et de son personnel. Ma première requête est la suivante : Code sql :
$resSQL = mysql_query("CREATE TEMPORARY TABLE table_temp1 SELECT id_entreprise, GROUP_CONCAT(CONCAT(nom, ' ', prenom)) AS nom_prenom FROM personnel GROUP BY id_entreprise"); La deuxième : Code sql :
Je récupère dans table_temp2, l'ensemble des infos sur l'entreprise et les noms et prénoms du personnel (chaîne séparée par une virgule). Cela fonctionne, mais c'est un peut lent .... Auriez vous une autre solution ? J'ai essayé de bascule cela dans une procédure stockée, c'est pareil ! Si j'intègre la première requête dans la deuxième, cela prend trop de temps à l'exécution et mysql tombe ! Merci d'avance A+ |
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Thierry NFC & DevWeb Inscription : avril 2006 Messages : 1 175 ![]() |
Il y a plusieurs chose à regarder car pour faire tomber un serveur MySQL il en faut bien plus que cela
1/ Je pense que la structure des tes tables est à revoir. Il faut que tu es in champ indéxé id_entreprise dans la table personnel ainsi qu'un champ id_personnel qui soit la clé primaire dans la table personnel. 2/ Ta requête select peut aussi se faire en utilisant un jointure LEFT JOIN par exemple |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : août 2005 Messages : 7 ![]() |
Alors là ... Bravo !!
J'ai ajouté l'index et réuni les 2 requêtes. Le temps de réponse est vraiment beaucoup plus rapide. Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com