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

Java Discussion :

Exécuter une requête SQL lourde en plusieurs fois


Sujet :

Java

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut Exécuter une requête SQL lourde en plusieurs fois
    Bonjour, je suis sous java avec une bdd oracle.
    et j'ai une requete qui retourne 3 000 000 millions de résultats.
    pour l'instant j'essaye d'enregistrer dans un tableau et de poster le tableau page par page mais c'est trop long.

    Comment faire?
    Y a t il moyen d'exécuter la requete en plusieurs fois?

    (pour l'instant j'ai testé avec les fetchsize, et les rownum sous oracle).

    merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 22
    Points : 21
    Points
    21
    Par défaut
    je connais pas tes structures, mais si jamais elle sont indexées par un id numérique (moi je fais ça sur des ordres bancaires) rajoute un "where id in (intervalle)" en utilisant des intervalles pas trop grand. tu dois pouvoir les générer dynamiquement.

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable Applicatif / Développeur
    Inscrit en
    Mai 2007
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Responsable Applicatif / Développeur

    Informations forums :
    Inscription : Mai 2007
    Messages : 495
    Points : 110
    Points
    110
    Par défaut
    merci pololetigrou, je vais surement utiliser ta solution.
    Par contre je me demandais quand même s'il n'y avait aucun moyen de faire une pause sur le traitement de la requete et de la reprendre après? ou équivalent.

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 36
    Points : 163
    Points
    163
    Par défaut
    Bonjour,

    As-tu évalué l'opportunité d'utiliser un curseur pour accéder séquentiellement à tes données?

    http://www.oracle.com/technology/doc...e/Cursors.html

    - Sylvain

  5. #5
    Membre habitué
    Avatar de benjamin_musique
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 54
    Points : 182
    Points
    182
    Billets dans le blog
    1
    Par défaut
    Salut
    je ne connais pas le contexte de ton sujet mais afficher un écran avec 3 millions de ligne, même en paginant, je vois pas l'utilité vu qu'aucun être humain ne peut retrouver son info là-dedans, à part en y passant une journée entière.
    En général quand je me suis confronté à ce genre de problème, c'est que derrière l'analyse des besoins n'était pas bonne. Est ce qu'il ne manquerait pas des filtres d'affichage, des rutpures dans la conception de ton écran?
    a+

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 36
    Points : 163
    Points
    163
    Par défaut
    je ne connais pas le contexte de ton sujet mais afficher un écran avec 3 millions de lignes, même en paginant, je vois pas l'utilité vu qu'aucun être humain ne peut retrouver son info là-dedans, à part en y passant une journée entière.
    Tu lis vite! D'autant plus que pour citer le message original, la requête renvoie "3 000 000 millions" de lignes - c'est à dire ... euh ... 3 billions?


    Sans indiscrétion, peut-on avoir une idée du traitement que tu fais dans ton appli de ces données?

    J'ai vu ailleurs que tu avais aussi un problème quand à la durée d'exécution de cette requête. Est-il envisageable d'ajouter un index à cette table pour faciliter l'extraction des résultats en filtrant de façon efficace ceux qui ne t'intéressent pas? Personnellement, j'aurais tendance à croire que c'est au niveau de ta requête SQL qu'il faut faire des modifications. Pas au niveau Java.


    - Sylvain

Discussions similaires

  1. [CR XI] Impossible d'exécuter une requête SQL
    Par staika dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/08/2009, 10h32
  2. Exécuter une requête SQL via un batch
    Par WeeJay dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 22/09/2008, 12h32
  3. Exécuter une requête SQL très longue
    Par coraziari_l dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 10/01/2008, 17h07
  4. [AJAX] Exécuter une requête SQL des la checkbox cochée
    Par dje064 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/05/2007, 11h25

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