begin process at 2012 05 30 22:43:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Bases de données

 > 

Optimisation de requete


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Optimisation de requete

lundi 27 mars 2006 à 16:39:48 | Optimisation de requete

gibozsec

Bonjour

J'ai un soucis avec une opération sur une base de données. J'explique le problème.

J'ai deux tables, pour simplifier je ne donne que les champs utiles :

messages : id_mess, corp_mess, date_creation
liste_mess : id_liste, id_mess, id_user

Lorsqu'un utilisateur envoi un message, une ligne contenant le corps du message et la date est créée dans la table message, et pour chaque destinataire une ligne est créée dans la table liste_mess.

Envoyer un message à 2 personnes génère une ligne dans messages et deux dans liste_mess. L'interet étant de ne stoker qu'une fois le corps du message.

Si un utilisateur supprime le message de sa boite mail, la ligne correspondante est supprimée dans liste_mess. Elle ne l'est pas dans messages puisque le message doit encore être disponnible pour les autres destinataires.

Le soucis étant que si tous les utilisateurs suppriment leur message, il reste un enregistrement fantôme dans la table messages. Cet enregistrement doit rester pour des raisons de sauvegarde mais doit être supprimé au bout d'un délai.

J'essaye de faire une requete me donnant la liste des messages de la table "messages" qui n'ont plus de correspondance dans la table "liste_mess" et datant de plus de X jours (le delai importe peu c'est pour l'exemple).

Sachant que ces deux tables contiennent déja plusieurs milliers de lignes ce que j'ai testé s'est montré trop lourd et à planté easyphp.

Quelqu'un aurait il une idée, fonctionelle et optimisée pour me permettre d'effacer mon surplus?

[B)][red]Grrrrrrrrrrr[/red][B)]
lundi 27 mars 2006 à 16:47:35 | Re : Optimisation de requete

sidf

salut,

genre
"Select id_mess From messages Where id_mess Not In (Select id_mess From liste_mess)
and date_creation<'$tadate_butoir'  ";
lundi 27 mars 2006 à 17:07:12 | Re : Optimisation de requete

gibozsec

"Select id_mess From messages Where id_mess Not In (Select id_mess From liste_mess)
and date_creation<'$tadate_butoir'  ";

Cette requete fonctionne, nous sommes d'accord. Mon problème est que la taille des deux tables engendre un temps d'execution très long.

Par exemple en ajoutant LIMIT 0,100 (donc juste les 100 premiers enregistrements), la requete met entre 1minute30 et 2 minutes à s'executer.

Est il possible de l'optimiser, ou d'utiliser une autre méthode (pas forcement en sql) pour accelerer le traitement.

J'ai essayer de traiter les données par plage de 100 avec refresh de la page en javascript pour passer à la plage suivante mais ça reste extrèmement lent.

Grrrrrrrrrrr
lundi 27 mars 2006 à 17:39:25 | Re : Optimisation de requete

sidf

"Par exemple en ajoutant LIMIT 0,100 (donc juste les 100 premiers enregistrements), la requete met entre 1minute30 et 2 minutes à s'executer."

c'est enorme, ce ne serait pas plutot les structures des tables qu'il faudrait optimiser ?
parce que là je pense qu'il y a un gros pb...
lundi 27 mars 2006 à 18:08:01 | Re : Optimisation de requete

gibozsec

J'ai déja optimisé les tables. A titre indicatif j'ai 400 000 lignes dans chaque table ca vient peut etre de la.

Grrrrrrrrrrr
mardi 4 avril 2006 à 00:57:08 | Re : Optimisation de requete

elidris

salut,
en fait je pense qu'il faut tout simplement que tu index tes tables, surtout pour les champs WHERE,

tu dois creer un index sur id_mess et sur date_creation,

ca devrais reduire tes requetes de quelques milliers de lignes !!!!

"La vie, c'est pour la vie..."
[ Lien ]



Cette discussion est classée dans : message, table, liste, messages, mess


Répondre à ce message

Sujets en rapport avec ce message

editer liste d'éléments n'étant pas dans une table [ par richarddum ] Bonjour,Mon soucis, je dispose de 2 tables (liste de personne, liste de diffusion de message).Dès qu'un message est transmit à quelqu'un il est donc e pseudo chat en php : problème d'actualisation de la page d'affichage des messages [ par Tristan75 ] Bonjour, Je créer un pseudo chat et j'ai quelque problème d'actualisation.Le principe de base est le suivant :chaque internaute s'enregistre dans une Requete sur base de données et lien entre deux select relié [ par fredo35m ] Bonjour, j'ai un petit problème entre deux selects liés. En effet, l'utilisateur doit faire un choix dans une 1ère liste (liste prédefinie). Une fois Pb liste déroulante provenant d'une table [ par fredo35m ] Bonjour,j'ai un problème avec ma liste déroulante qui contient les données d'une table. En effet, pour toutes mes listes déroulantes, il m'affiche tou triple jointure JOIN LEFT SQL [ par coucou747 ] Salut, Pour un projet, j'aimerais faire une triple jointure : j'ai fait une table mysql pour des contacts, une table qui contient des groupes, une ta recherche dans une table [ par 01cod10 ] J'aimerai afficher la liste de tous les membres ayant comme sexe femme dont l'age est compris entre 30 et 35 et  une photo je sais que je dois utilise besoin un code [ par snikersmaster ] bonjour, j'ai besoin un code pour afficher dans ma page web a partire de ma table la liste des villes et des partenaires qui exist deja ds la table. N Recuperer les champs d'une table dans une liste [ par jantonazzo ] Bonjour tout l'monde,J'aimerais afficher dans une liste deroulante les champs d'une table MySQL.<IMG alt="" hspace=0 src="file:///C:/Documents%20and%2 Selection d'une table via une liste deroulante [ par agenceacapulco ] Bonsoir... maintenan que j'ai une liste déroulante listant mes table dont les option proviennent de ma bdd, je souhaiterais pouvoir compléter ce scri Exclure table [ par agenceacapulco ] Bonjour, Je souhaiterais savoir si on peut exclure certaines tables d'une liste deroulante parametrée via maa bdd... car compte tenu que je n'est qu'


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales