IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Comment afficher une requete comportant 100.000 reponses


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    mai 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Comment afficher une requete comportant 100.000 reponses
    Bonjour,

    J'ai une base MySQL qui comporte une table avec plus de 100.000 lignes et 4 colonnes.

    J'aimerai pouvoir faire un:

    SELECT *
    FROM le_nom_de_ma_table;

    Et afficher ce resultat dans une page web grace a l'intermediaire de java
    (par le biais d'un resultset),
    le probleme c est que je n'ai pas suffisament de memoire pour pouvoir
    afficher ces 100.000 resultats d'un coup.

    Ma question est donc :

    Est il possible de recuperer les resultats d'une requete en plusieur fois ou
    alors faut il que je stock mes resultats dans un fichier que je lirai apres.

    Voila si vous avez deja rencontre ce probleme et que vous avez une solution ca m'interresse.
    Vous vous en doutiez ?

    Merci et bonne journée

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : janvier 2005
    Messages : 7 796
    Points : 10 741
    Points
    10 741
    Par défaut
    Je ne sais pas si tu peux faire de la pagination directement avec une requête cependant je sais que sous Oracle, il est possible de créer ta propre pagination grâce aux RowId, "colonne cachée".

  3. #3
    Candidat au Club
    Inscrit en
    mai 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Ouai mais j'utilise MySQL et je ne peux pas utiliser autre chose.
    PHPMyAdmin arrive a afficher les resultats d'une requete

    SELECT *
    FROM nom_table;

    mais je ne sais pas quelle methode il utilise.
    Est il possible d'afficher les resultats sans les stocker?

  4. #4
    Nouveau membre du Club
    Inscrit en
    juin 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 23
    Points : 28
    Points
    28
    Par défaut
    Existe-t-il une seule personne capable de lire tes 100000 lignes ?

    Si non, pourquoi vouloir toutes les afficher ?

    Si c'est pour un processus distant, pourquoi ne pas lui fabriquer un fichier, qu'il récupérerait par un get http, par exemple ?

  5. #5
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : janvier 2005
    Messages : 7 796
    Points : 10 741
    Points
    10 741
    Par défaut
    Justement c'est ce qu'il veut éviter.

    En fait, tu utilises quel langage WEB, car en ASP.NET la pagination est assez simple en fait, en Java aussi. Mais tu devrais faire un truc du genre tu lis les premiers résultats jusqu'au millième et ensuite tu dis : "Veuillez préciser votre recherche afin d'obtenir des informations plus précises !"

    Dans un des logiciels que j'ai créé, on dois chercher les commandes, sachant que c'est en WEB, quand il y a plus de 50 résultats, je dis que j'en affiche que 50 et qu'ils pourraient affiner la recherche.

    Tu sais, j'ai peur qu'avec une requête aussi grosse ta page ne s'affiche jamais, ou alors il faudra la paginer. En PHP, j'ignore si c'est possible...

  6. #6
    Nouveau membre du Club
    Inscrit en
    juin 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : juin 2005
    Messages : 23
    Points : 28
    Points
    28
    Par défaut
    En fait le problème d'écrire une page web de 100000 lignes est secondaire.

    Le principal obstacle est de faire tenir en mémoire le ResultSet d'une requête retournant 100000 rangées.

    Peut être la solution est elle d'exécuter bcp de requêtes de taille moyenne, par exemple 100 requêtes retournant chacune 1000 lignes.

    il faudrait pouvoir trouver un critère qui permette de séparer les 100000 lignes en groupes de taille à peu près semblables :

    - une plage d'id :
    SELECT * FROM nom_table where id between a and b;
    - une date :
    SELECT * FROM nom_table where date between a and b;

    ... ou autre chose!

  7. #7
    Candidat au Club
    Inscrit en
    mai 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : mai 2005
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    C est vrai que ca n'a pas un grand interet d'afficher les 100000 reponses je pense que je ne vais afficher que les n premier resultats et faire un bouton pour pouvoir afficher les n suivant ainsi de suite.
    Le langage web que j'utilise est Java.
    Cette solution me semble pas mal du tout pour n'afficher q'un nombre limité de reponses.
    SELECT * FROM nom_table where id between a and b;

    >Tu sais, j'ai peur qu'avec une requête aussi grosse ta page ne s'affiche >jamais
    Oui effectivement apres reflexion, il y a de grande chance pour que cela arrive.

    >, ou alors il faudra la paginer.
    Je ne connais pas la pagination

    Merci a vous tous

Discussions similaires

  1. [MySQL] Comment afficher une requete commencer par un id spécifier
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/11/2011, 23h54
  2. comment afficher une requete dans une zone de texte
    Par j.homme dans le forum Langage
    Réponses: 7
    Dernier message: 11/05/2010, 15h57
  3. [débutante] comment afficher une page asp ?
    Par boucher_emilie dans le forum ASP
    Réponses: 5
    Dernier message: 29/06/2004, 10h40
  4. comment afficher une boite de dialogue simple ?
    Par Ekimasu dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 08/06/2004, 17h46
  5. Réponses: 2
    Dernier message: 03/05/2004, 13h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo