Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/03/2011, 07h25   #1
Invité de passage
 
Inscription : août 2005
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 7
Points : 1
Points : 1
Par défaut Temps de réponse

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 :
1
2
 
$resSQL = mysql_query("CREATE TEMPORARY TABLE table_temp2 SELECT id_entreprise, nom_entreprise, cp_entreprise, ville_entreprise, IFNULL((SELECT nom_prenom FROM table_temp1 WHERE id_entreprise = entreprise.id_entreprise), ' ') AS nom_prenom FROM entreprise ORDER BY nom_entreprise");

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+
loumy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 08h45   #2
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
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
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 09h02   #3
Invité de passage
 
Inscription : août 2005
Messages : 7
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 7
Points : 1
Points : 1
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
loumy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h08.


 
 
 
 
Partenaires

Hébergement Web