begin process at 2012 05 31 14:55:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Requête SQL complexe


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

Requête SQL complexe

lundi 21 juin 2004 à 01:08:50 | Requête SQL complexe

dadybond

Je souhaiterais intégrer un systeme de votes sur mon site, une page où l'on peut attribuer une note en fonction d'une photo, lorsqu'une photo est notée, la page suivante en affiche une autre pas encore notée.
Mais mon problème se situe au niveau de la requête vers mysql :
En effet je fais une jointure entre deux tables avec un LEFT JOIN sur la table des votes, elle va chercher une photo qui n'a pas encore été notée par le membre.
Mais lorsque le membre a voté pour beaucoup de photos, la requête met un temps fou pour s'executer car elle cherche l'ensemble des photos déjà notées dans la table 'vote' pour les exclure du résultat.
Donc le temps d'execution augmente en fonction du nombre de votes effectués par le membre.
Ma question est :
Y'a t'il une solution qui permet un scanne plus rapide de la table mysql ou avec des tables temporaires ou autres..., donc une solution viable à long terme.
Merci.
lundi 21 juin 2004 à 12:12:41 | Re : Requête SQL complexe

phpwankenobi


Il faudrait la structure de tes deux tables, y compris les index , et ta requête afin que l'on puisse essayer de répondre correctement.
Le nombre de lignes de chaque table serait aussi intéressant...
lundi 21 juin 2004 à 12:53:57 | Re : Requête SQL complexe

dadybond

la table où sont enregistré les votes :

CREATE TABLE `votes` (
`id` int(10) unsigned NOT NULL auto_increment,
`id_votant` int(11) unsigned NOT NULL default '0',
`id_photo_concernee` int(11) unsigned NOT NULL default '0',
`note_attribuee` int(10) unsigned NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `id_2` (`id`),
KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=15844 ;


La table où sont enregistré les photos :

CREATE TABLE `photos` (
`id_photo` int(11) unsigned NOT NULL auto_increment,
`id_proprio` int(10) unsigned NOT NULL default '0',
`comment` text NOT NULL,
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id_photo`)
) TYPE=MyISAM AUTO_INCREMENT=1197 ;

La requête :

$req = "SELECT a.id_photo,a.id_proprio FROM photos a LEFT JOIN votes b ON b.id_votant='".$_SESSION['id_membre']."' AND b.id_photo_concernee=a.id_photo WHERE b.id_photo_concernee IS NULL AND a.valide='TRUE' AND a.id_proprio!='".$_SESSION['id_membre']."' ORDER BY RAND() LIMIT 1";

Voilà j'espére que ça pourra t'aider à trouver une réponse.
mardi 22 juin 2004 à 12:24:29 | Re : Requête SQL complexe

phpwankenobi

Je n'ais pas trop de temps pour chercher, mais je pense qu'en ajoutant un index sur le champ id_votant de la table votes devrait améliorer les perfs.
Envisager aussi un index sur le champ id_photo-concernée

Tout ceci est assez facile à tester car on n'intervient que sur les tables et pas sur le code.

Si cela est efficace, merci de nous le faire savoir...
mardi 22 juin 2004 à 13:35:05 | Re : Requête SQL complexe

dadybond

Tu m'as sauvé la vie ! lol
ça marche à la perfection !!!
Je n'y connais strictement rien au niveau de l'indexation des champs et je n'aurais jamais imaginé leur importance...
Merci bcp !
mardi 22 juin 2004 à 15:56:30 | Re : Requête SQL complexe

phpwankenobi


L'index ne contient que le champ concerné et éventuellemnt des pointeurs. Sa taille est infiniment plus petite que celle de la table, et on comprend donc aisément qu'un scan de l'index et plus rapide qu'un scan de la table.

Ceci dit, attention à l'excès d'index, il peuvent nottament ralentir les traitements de mise à jour.....


Cette discussion est classée dans : table, requête, photo, votes, notée


Répondre à ce message

Sujets en rapport avec ce message

Requête dans des colonnes multiples [ par Francois402 ] Bonjour à tous Je fais une galerie de photos dynamique avec des clients et employés d'une entreprise. Pour chaque entrée de photo dans le CMS, il y a Requête sur une table dépendant d'une autre requête [ par phil7799 ] Bonjour, j'essaye de faire une requête qui dépend du résultat d'une autre requête mais je n'y parviens pas.Dans une table, "popularite" j'extrais les Requête introuvable ... [ par cdie ] Chers amis développeurs, bonjour, Je vous écris car je travaille actuellement sur un site pour un projet et j'avoue que je ne trouve pas une requête. recuperer mes requêtes depuis une table [ par 7assba ] S.V.P Aidez moi!Bonjour tous le monde.. je vais enregistrer mes requêtes sql dans une table puis les récupérer pour l'utiliser dans mon code php.. // Comment donnée un type à cet attribut d'une table?? [ par djibidl ] Bjr, J'ai besoin de créer une base de donnée relationnelle dans laquelle il y a beaucoup de tables. Lors de la création de ces dernières avec la co Requête SQL : CREATE TABLE et DEFAULT [ par RV2931 ] bonjour,je cherche depuis un bout de temps, mais en vain,je voudrais créer une table, avec un champ date de type DATE, mais qui prendrai comme valeur Recherche multiple [ par coockiesch ] Hello!J'aimerai faire une recherche dans plusieurs champs d'une table MySQL, j'ai ma requête comme ceci (pour un champ):$sql_query = "SELECT caption F Affichage presque aléatoire! [ par wynelle ] Bonjour,A partir d'une table MySQL avec id, photo, commentaires,... je souhaite lancer une requête qui affichera une SEULE photo + son commentaire et requête de non concordance avec jointure 3 tables [ par dubitoph ] ChristopheHé oui, je suis toujours là avec mes angoisses pour mon mémoire.J'ai une base de données MySql qui contient, en autres, une table "interimai Division dans une requête SQL [ par Kevergeek ] Donc voilà j'ai une base de données dont une table (montages) qui comporte une colonne (votes) qui contient 2 nombres séparés par une virgule (a,b) a


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,593 sec (3)

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