Accueil > Forum > > > > Requete interminable
Requete interminable
mardi 14 septembre 2004 à 00:01:29 |
Requete interminable

arthurnet
|
Bonjour, je développe un site sur serveur dédié (puissant). Etant donné le nombre de requetes par secondes trop grand (78 req/sec), j'ai cherché à reduire celui-ci en optimisant mes scripts... Plutot que de faire une boucle par requete, de la forme: <? $result = SELECT * FROM table1 WHERE ... while($ligne = mysql_fetch_object($result)){ $result2 = SELECT * FROM table2 WHERE ... while($ligne2 = mysql_fetch_object($result2)){ echo $ligne->row1." ".$ligne2->row2; } } ?> j'ai transformer mes requetes avec des INNER JOIN, LEFT JOIN,... pour avoir tout les resultats d'un seul coup. Le probleme arrive lors de l'execution de ces requetes: une page qui contient une seule requete reliant 3 tables différentes ne veut pas s'afficher en ligne alors qu'elle fonctionne tres bien en local (avec Easy PHP). Le chargement de cette page est tres long et au bout d'un certain temps, erreur "Impossible d'afficher la page". Je suis donc aller voir les Processus Mysql pendant le chargement de cette page. Ma requete apparait bien dans la liste mais le tableau montre que: Etat = "Copying to tmp table" Durée = va jusqu'à 1500 sec je voi meme d'autres requetes (qui sont a mon avis générées) apparaitre. De plus, lorsque je ferme la page qui charge le script, la requete reste toujours dans les processus et je dois la supprimer pour que le serveur arrete de ramer. Vous allez surement me demander la requete en question, mais le probleme ne vient pas de là. Il est vrai que le site accueille beaucoup de visiteurs (donc beaucoup de requetes), mais tout les sites de programmation parlent d'INNER JOIN pour optimiser MYSQL, alors que dans mon cas, cela va dans le sens contraire. Je vous demande de me faire part de toutes vos remarques ou de vos éventuels problemes sur ce point (même si vous ne connaissez pas l'explication), car c'est en discutant que vous m'aiderez à résoudre ce probleme qui m'insuporte. En vous remerciant d'avance... Arthur
|
|
mardi 14 septembre 2004 à 09:08:30 |
Re : Requete interminable

phpwankenobi
|
Salut,
Cette durée me parait énorme....MySQL est tout de même très performant.
Il faudrait avoir une idée de la volumétrie (nombre de lignes) de tes tables, vérifier si les champs utilisés dans tes conditions "WHERE" sont bien indéxés, vérifier que ta requête est bien construite (qu'elle n'effectue pas un produit cartésien par exemple).
A+
|
|
mardi 14 septembre 2004 à 18:43:48 |
Re : Requete interminable

arthurnet
|
Slt,
voila les 3 tables utilisées:
TABLE `soirees` ( `id` smallint(6) NOT NULL auto_increment, `nom` varchar(255) NOT NULL default '', `type` varchar(50) NOT NULL default '', `description` text NOT NULL, `code` varchar(50) NOT NULL default '', `photo` varchar(255) NOT NULL default '', `lieu` varchar(50) NOT NULL default '', `email` varchar(255) NOT NULL default '', `photographe` varchar(255) NOT NULL default '', `dresscode` text NOT NULL, `infoline` text NOT NULL, `date` varchar(50) NOT NULL default '', `poster` smallint(1) NOT NULL default '1', `commentaire` text NOT NULL, `photo_online` int(50) NOT NULL default '0', `rang` int(10) NOT NULL default '0', `visite` int(10) NOT NULL default '0', `categorie` varchar(50) NOT NULL default '', KEY `id` (`id`) )
TABLE `comments` ( `nomsoiree` varchar(20) NOT NULL default '', `urlphoto` varchar(20) NOT NULL default '', `n_comment` int(11) NOT NULL default '0', `commentaire` blob, `nom` varchar(100) NOT NULL default '', `email` varchar(100) NOT NULL default '', `heure` varchar(15) NOT NULL default '', `date` varchar(15) NOT NULL default '', `idc` int(11) NOT NULL auto_increment, `ip` varchar(20) NOT NULL default '', KEY `idc` (`idc`) )
TABLE `photos` ( `nomsoiree` varchar(20) NOT NULL default '', `urlphoto` varchar(50) NOT NULL default '', `vues` int(11) NOT NULL default '0', `idp` int(11) NOT NULL auto_increment, `width` int(11) NOT NULL default '640', `height` int(11) NOT NULL default '480', `poster` char(1) NOT NULL default '1', KEY `idp` (`idp`) )
TABLE soirees: 200 enregistrements TABLE comments: 38326 enregistrements TABLE soirees: 7921 enregistrements
voila ma requete: SELECT *,soirees.date AS date_s, COUNT(comments.nomsoiree) AS nb_comm,photos_vues.nomsoiree AS lasoiree,photos_vues.urlphoto AS lurlphoto FROM photos_vues INNER JOIN soirees ON photos_vues.nomsoiree = code LEFT JOIN comments ON (photos_vues.urlphoto = comments.urlphoto AND photos_vues.nomsoiree = comments.nomsoiree)".$condition." GROUP BY photos_vues.idp ORDER BY vues DESC LIMIT 15
J'avais oublié de préciser que la requete qui ne fonctionne pas n'est pas la plus grosse du site...il y a une requete qui relie une table de 10000 enregistrements avec une table de 196000 enregistrments et celle-ci fonctionne parfaitement.
Merci de m'aider
|
|
mardi 14 septembre 2004 à 18:51:30 |
Re : Requete interminable

arthurnet
|
je précise aussi que $condition est par default nulle, donc n'influe pas la requete. la table photos_vues est en fait la table photos (erreur de copiage de ma part  ) ps: si les tables sont aussi mal organisées, c'est juste paske je les récupère d'un ancien codeur. ++
|
|
mercredi 15 septembre 2004 à 12:31:59 |
Re : Requete interminable

phpwankenobi
|
Réponse acceptée !
Salut,
Evidemment, vu la structure des tables t'es pas sorti de l'auberge! Je te conseille de revoir la structure et d'être au minimum à la deuxième forme normale.
Cependant je pense qu'en ajoutant un index (non unique) sur les champs nomsoiree et urlphoto des tables comments et photos devrait améliorer la sauce.
a+
|
|
mercredi 15 septembre 2004 à 13:05:14 |
Re : Requete interminable

phpwankenobi
|
Tu peux en outre faire une analyse de ta requête avant et après ajout des index pour effectuer une comparaison. La commande à lancer est la suivante : EXPLAIN SELECT *,soirees.date AS date_s, COUNT(comments.nomsoiree) AS nb_comm,photos_vues.nomsoiree AS lasoiree,photos_vues.urlphoto AS lurlphoto FROM photos_vues INNER JOIN soirees ON photos_vues.nomsoiree = code LEFT JOIN comments ON (photos_vues.urlphoto = comments.urlphoto AND photos_vues.nomsoiree = comments.nomsoiree) GROUP BY photos_vues.idp ORDER BY vues DESC LIMIT 15
|
Tu regardes la colonne "rows" du résultat qui te donne le nombre de lignes parcourues pour produire le resultat, il devrait être très différent avant et après ajout des index.... A+
|
|
vendredi 17 septembre 2004 à 00:29:18 |
Re : Requete interminable

arthurnet
|
Bon je vais réorganiser mes structures avec des index, sinon me retourne le nombre d'enregistrements de la table "photos_vues" donc je pense que même après ça sera la même chose Merci de ces indications ++
|
|
Cette discussion est classée dans : page, probleme, requete, requetes, join
Répondre à ce message
Sujets en rapport avec ce message
probleme avec une requete ! [ par winroro98 ]
bonjour !j'ai un probleme de requete avec mon code qd j'ouvre ma page il me met erreur requete mais la je ne vois pas !!!pouvez vous m'aidez !!!!merci
probleme url requete mysql [ par petiteamoula ]
salut j'ai un gros problème et j'espère que vous pouvez m'aidez j'ai la carte du monde réalisé en flah et j'ai l'intégrer dans dreamweaver comme swf
probleme inclue et lien [ par eda1 ]
Bonjour, voila j'expose mon petit souci: A la base le site contenai 4 pages dont index.php sur chaque page deu site j'aidans la parti du conteneur
Probleme ??? [ par musulmanislam ]
j'ai 2 page 'P1.html et P2.php le probleme c'est dans le code php qui m'affiche pas les langue que j'ai choisie Vous pouvez me corrigé cette erreur d
[Probleme] Requete mysql sur un champ date JJ/MM/AAAA [ par fan2system ]
Bonjour, le titre est assez explicite je crois. J'ai une base de donnée qui gere des evenement divers, mais je voudrai que quand je l'affiche sur la p
inserer une saisi dans une requete SQL [ par ashron54 ]
Bonjour,désolé si le titre n'est pas très explicite mais je ne sais pas trop comment formuler ca, donc je me lance :je créer une page de formulaire da
Fkeditor : probleme bdd pour la news [ par kiffenlair ]
bonjour à tous, Voila j'ai travaillé depuis quelque temps avec FDKEDITOR, cependant j'ai un petit souci pour enregistré ma news dans ma BDD et ensuit
numéroter le résultat d'une requete [ par dnicce ]
Bonjour, je ne trouve rien sur ce sujet, alors je pose la question , et vous remercie par avance. En fait mon probleme n'est pas très compliqué, je v
probleme dans page d'inscription [ par vrkill2 ]
bonjour j'ai un souci avec ce bout de scripte qui est sencé vérifier que le pseudo n'existe pas déjà, ça ne marche pas, si quelqu'un a une idée Merci
Probleme d'includes [ par konor ]
Bonjour,Ca fait un petit moment que j'essai d'utliser la fonction include().J'utilise easyPHP comme serveur.Je pense bien avoir ecrit mon code mais je
Livres en rapport
|
Derniers Blogs
MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg [MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|