Accueil > Forum > > > > Requête SQL complexe
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
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|