RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 optimisation requete

Forum : MYSQL
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ MYSQL

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM MYSQL

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
roro_fofo
Nouveau membre
Inscrit : 08/07/2007
Messages : 1
Message
#137956
Posté le 08/07/07 à 13:12
Bonjour,

Jai un probleme d'optimisation d'une requete

J'ai une table "commentaire" de visiteurs ou je fais des recherches sur des mots clefs, cette requete me permet d'extraire le numero correspondant au commentaire.

La structure de cette table est :

numero,commentaires_1,supprimer

numero : int
commentaires_1 : text
supprimer : enum('0', '1')

A partir des numeros que j'obtiens, je fais une recherche sur ma table utilisateur pour savoir le ou lesquels ont fait des commentaires qui correspondents a la premiere requete.

ma table utilisateurs est de la forme :

nom,prenom,commentaire_1,commentaire_2,commentaire_3,commentaire_4,commentaire_5,commentaire_6,commentaire_7,commentaire_8,commentaire_9,supprimer

nom : text
prenom : text
commentaire_1 à 9 : int
supprimer : enum('0', '1')

Je fais une recherche sur 3 mots lors de la premiere requete ensuite je teste mes visiteurs soit 6000.

mon code ( 1ere forme ) : temps 40 sec
la requete qui pose probleme est la seconde : $requete_rep


$siz1=sizeof($_SESSION["recherche_libre1"]); # nombre de mot dans la recherche for ( $j = 0 ; $j < $siz1 ; $j++ ) { $a=$_SESSION["recherche_libre1"][$j]; if ( $a <> "" and strlen($a) > 2 ) { $requete = "SELECT numero FROM `procedures_commentaires_1` where commentaires_1 like '%".$a."%' and supprimer='0'"; $resultrequete = mysqli_query($GLOBALS["___mysqli_ston"], $requete ) or die( cadre_erreur( $script_url, __LINE__, $requete ) ); if ( mysqli_num_rows( $resultrequete) > 0 ) { while ( $ligne = mysqli_fetch_array( $resultrequete ) ) { extract( $ligne ); $rep=$ligne["numero"]; $requete_rep = "SELECT numero FROM `procedures` where ( commentaire_1='".$rep."' or commentaire_2='".$rep."' or commentaire_3='".$rep."' or commentaire_4='".$rep."' or commentaire_5='".$rep."' or commentaire_6='".$rep."' or commentaire_7='".$rep."' or commentaire_8='".$rep."' or commentaire_9='".$rep."' ) and supprimer='0' ORDER BY numero"; $resultrequete_rep = mysqli_query($GLOBALS["___mysqli_ston"], $requete_rep ) or die( cadre_erreur( $script_url, __LINE__, $requete_rep ) ); if ( mysqli_num_rows( $resultrequete_rep ) > 0 ) { while ( $ligne_rep = mysqli_fetch_array( $resultrequete_rep ) ) { extract( $ligne_rep ); $resultat_tableau["commentaire"][]=$ligne_rep["numero"]; } } } } } }


Mon code ( 2eme forme ) : temps 28 sec


$siz1=sizeof($_SESSION["recherche_libre1"]); # nombre de mot dans la recherche for ( $j = 0 ; $j < $siz1 ; $j++ ) { $a=$_SESSION["recherche_libre1"][$j]; if ( $a <> "" and strlen($a) > 2 ) { $requete = "SELECT numero FROM `procedures_commentaires_1` where commentaires_1 like '%".$a."%' and supprimer='0'"; $resultrequete = mysqli_query($GLOBALS["___mysqli_ston"], $requete ) or die( cadre_erreur( $script_url, __LINE__, $requete ) ); if ( mysqli_num_rows( $resultrequete) > 0 ) { while ( $ligne = mysqli_fetch_array( $resultrequete ) ) { extract( $ligne ); $rep=$ligne["numero"]; $requete_rep = "SELECT numero FROM `procedures` where commentaire_1='".$rep."' and supprimer='0'"; $resultrequete_rep = mysqli_query($GLOBALS["___mysqli_ston"], $requete_rep ) or die( cadre_erreur( $script_url, __LINE__, $requete_rep ) ); if ( mysqli_num_rows( $resultrequete_rep ) > 0 ) { while ( $ligne_rep = mysqli_fetch_array( $resultrequete_rep ) ) { extract( $ligne_rep ); $resultat_tableau["commentaire"][]=$ligne_rep["numero"]; } } $requete_rep = "SELECT numero FROM `procedures` where commentaire_2='".$rep."' and supprimer='0'"; $resultrequete_rep = mysqli_query($GLOBALS["___mysqli_ston"], $requete_rep ) or die( cadre_erreur( $script_url, __LINE__, $requete_rep ) ); if ( mysqli_num_rows( $resultrequete_rep ) > 0 ) { while ( $ligne_rep = mysqli_fetch_array( $resultrequete_rep ) ) { extract( $ligne_rep ); $resultat_tableau["commentaire"][]=$ligne_rep["numero"]; } } $requete_rep = "SELECT numero FROM `procedures` where commentaire_3='".$rep."' and supprimer='0'"; $resultrequete_rep = mysqli_query($GLOBALS["___mysqli_ston"], $requete_rep ) or die( cadre_erreur( $script_url, __LINE__, $requete_rep ) ); if ( mysqli_num_rows( $resultrequete_rep ) > 0 ) { while ( $ligne_rep = mysqli_fetch_array( $resultrequete_rep ) ) { extract( $ligne_rep ); $resultat_tableau["commentaire"][]=$ligne_rep["numero"]; } } $requete_rep = "SELECT numero FROM `procedures` where commentaire_4='".$rep."' and supprimer='0'"; $resultrequete_rep = mysqli_query($GLOBALS["___mysqli_ston"], $requete_rep ) or die( cadre_erreur( $script_url, __LINE__, $requete_rep ) ); if ( mysqli_num_rows( $resultrequete_rep ) > 0 ) { while ( $ligne_rep = mysqli_fetch_array( $resultrequete_rep ) ) { extract( $ligne_rep ); $resultat_tableau["commentaire"][]=$ligne_rep["numero"]; } } $requete_rep = "SELECT numero FROM `procedures` where commentaire_5='".$rep."' and supprimer='0'"; $resultrequete_rep = mysqli_query($GLOBALS["___mysqli_ston"], $requete_rep ) or die( cadre_erreur( $script_url, __LINE__, $requete_rep ) ); if ( mysqli_num_rows( $resultrequete_rep ) > 0 ) { while ( $ligne_rep = mysqli_fetch_array( $resultrequete_rep ) ) { extract( $ligne_rep ); $resultat_tableau["commentaire"][]=$ligne_rep["numero"]; } } $requete_rep = "SELECT numero FROM `procedures` where commentaire_6='".$rep."' and supprimer='0'"; $resultrequete_rep = mysqli_query($GLOBALS["___mysqli_ston"], $requete_rep ) or die( cadre_erreur( $script_url, __LINE__, $requete_rep ) ); if ( mysqli_num_rows( $resultrequete_rep ) > 0 ) { while ( $ligne_rep = mysqli_fetch_array( $resultrequete_rep ) ) { extract( $ligne_rep ); $resultat_tableau["commentaire"][]=$ligne_rep["numero"]; } } $requete_rep = "SELECT numero FROM `procedures` where commentaire_7='".$rep."' and supprimer='0'"; $resultrequete_rep = mysqli_query($GLOBALS["___mysqli_ston"], $requete_rep ) or die( cadre_erreur( $script_url, __LINE__, $requete_rep ) ); if ( mysqli_num_rows( $resultrequete_rep ) > 0 ) { while ( $ligne_rep = mysqli_fetch_array( $resultrequete_rep ) ) { extract( $ligne_rep ); $resultat_tableau["commentaire"][]=$ligne_rep["numero"]; } } $requete_rep = "SELECT numero FROM `procedures` where commentaire_8='".$rep."' and supprimer='0'"; $resultrequete_rep = mysqli_query($GLOBALS["___mysqli_ston"], $requete_rep ) or die( cadre_erreur( $script_url, __LINE__, $requete_rep ) ); if ( mysqli_num_rows( $resultrequete_rep ) > 0 ) { while ( $ligne_rep = mysqli_fetch_array( $resultrequete_rep ) ) { extract( $ligne_rep ); $resultat_tableau["commentaire"][]=$ligne_rep["numero"]; } } $requete_rep = "SELECT numero FROM `procedures` where commentaire_9='".$rep."' and supprimer='0'"; $resultrequete_rep = mysqli_query($GLOBALS["___mysqli_ston"], $requete_rep ) or die( cadre_erreur( $script_url, __LINE__, $requete_rep ) ); if ( mysqli_num_rows( $resultrequete_rep ) > 0 ) { while ( $ligne_rep = mysqli_fetch_array( $resultrequete_rep ) ) { extract( $ligne_rep ); $resultat_tableau["commentaire"][]=$ligne_rep["numero"]; } } } } } }


Tout mes champs sont indexés mais je n'arrive pas a diminuer le temps de recherche :

table procedures commentaires_1
PRIMARY PRIMARY 5864 numero
supprimer INDEX 2 supprimer
commentaires_1 FULLTEXT 1 commentaires_1

table procedures
PRIMARY PRIMARY 6266 numero
supprimer INDEX 2 supprimer
commentaire_1 INDEX 298 commentaire_1
commentaire_2 INDEX 783 commentaire_2
commentaire_3 INDEX 1566 commentaire_3
commentaire_4 INDEX 1 commentaire_4
commentaire_5 INDEX 417 commentaire_5
commentaire_6 INDEX 368 commentaire_6
commentaire_7 INDEX 895 commentaire_7
commentaire_8 INDEX 10 commentaire_8
commentaire_9 INDEX 102 commentaire_9
commentaire_10 INDEX 783 commentaire_10

Voilà, si quelqu'un a une idée pour me permettre d'optimiser mes recherches.

Merci

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

RoCk_4_EvEr
Admin Projet
Superviseur :
- Bavardages
- Langages Web
Modérateur :
- XP / 2000 / .
- Défis 3D
- Mathématique.
- MySQL
Chef de projet(s) :
- AdminServ
- Irc-Land
- MoteurProg Bot

Avatar de RoCk_4_EvEr
Inscrit : 20/11/2005
Messages : 1241
Message
#137975
Posté le 08/07/07 à 16:19
Ton code peut-etre reduit au maximum pour ce serveur ce qui veut dire ca ne sert a rien de travailler dessu pour la faire aller plus vite car hebergeur ne suit pas... tu es heberger où ? Regarde MoteurProg il sautait saturé de requete SQL donc la on a change sur un vraiment plus gros serveur plus perfomant... Si on paye le meme prit que l'ancien... mais la celui la il est payer a 2 ... alors disons avant ca coute 500$ ... celui la a coute 1000$/mois ou 1000$/an je sais plus... entk tous ca pour dire ca vien du serveur hébergement... et si tu es hebergé gratuit...bien la c'est sure ca c'est ce qu'il a de plus mauvais... Tous plein de clients sur le meme serveur... ouch!
__________________________
Votre Serviteur Rock_4_Ever Smiley

Je m'excuse des fautes faites.

Je suis présentement: Image sur msn.

N'oubliez pas non plus la mention Résolu Image

Venez nous rejoindre sur le chat de MoteurProg, par Java ou mIRC

Lecteur de Flux RSS de MoteurProg

Image Image

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 


    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.