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

JDBC Java Discussion :

performance SQL delete multiple rows


Sujet :

JDBC Java

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 106
    Points : 182
    Points
    182
    Par défaut performance SQL delete multiple rows
    Bonjour

    Je recherche un moyen pour supprimer plusieurs lignes de ma table ORACLE avec des conditions.
    Je dois supprimer 10 000 lignes de ma table
    si je fais un delete pour chaque ligne (j'ai simplifié ma requête)
    DELETE FROM ac_properties WHERE (PROP_ID=1076 AND DAT_ID=1469 AND DAT_ID2=1187 )
    DELETE FROM ac_properties WHERE (PROP_ID=1077 AND DAT_ID=1469 AND DAT_ID2=1188 )
    ....
    ca me prends énormément de temps

    si je fais un delete unique avec des OR
    DELETE FROM ac_properties WHERE
    (PROP_ID=1076 AND DAT_ID=1469 AND DAT_ID2=1187 ) OR
    (PROP_ID=1077 AND DAT_ID=1469 AND DAT_ID2=1188 ) OR
    ...
    ca améliore pas mal

    N'étant pas un expert dans les requêtes SQL, je recherche un moyen pour améliorer cela.
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Tu peux essayer les traitements batch.

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 106
    Points : 182
    Points
    182
    Par défaut
    Merci de ta réponse mais cela augmente le temps par rapport à ma requête avec un delete unique

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    tu dois pouvoir améliorer ta condition de suppression peux tu donner ta structure de table? et quelle est la condition pour qu'une ligne soit supprimée?

  5. #5
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    Peut-on avoir l'implémentation ?
    Comment est gérée la connexion ?
    L'exécution des delete est-il transactionnel ?
    Il peut y avoir des choses à améliorer de ce côté là en plus de regarder le SQL.

  6. #6
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 084
    Points
    7 084
    Par défaut
    Tu travaillerais pas pour Airbus toi avec un login à la stXXXXX et une table AC_XXXXX ?

    Que la table soit transactionelle ou pas (possible en Oracle ?), etc. Le premier truc à optimiser c'est clairement le SQL.
    Moins il y a de requêtes plus c'est rapide.
    Plus la requête est simple plus elle devrait être rapide.

    Donc si tu peux faire une seule requête avec "OR" par exemple fais-le. Après il faut autant que possible regrouper les requêtes par lot. Avec des batch, si tu utilises des PreparedStatement, addBatch() te permet de ne changer sur les paramètres sans reconstruire une nouvelle requête. Ca devrait être un poil plus optimale que générer une nouvelle requête à chaque fois.

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 106
    Points : 182
    Points
    182
    Par défaut
    >Tu travaillerais pas pour Airbus toi avec un login à la stXXXXX et une table AC_XXXXX ?
    Effectivement

    Je laisse temporairement ce post car on m'a demandé de travailler sur autre chose

  8. #8
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 084
    Points
    7 084
    Par défaut
    Mince j'aurais pas dû t'aider, si ca se trouve tu bosses pour la concurrence :p

  9. #9
    Membre habitué

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 106
    Points : 182
    Points
    182
    Par défaut
    ou bien dans la même société de toi
    On est peut-être dans le même batiment, voire dans le même open-space, voire le même bureau, voire mon collègue qui sait?

Discussions similaires

  1. [PostGre SQL] Jointure multiples impossible
    Par Montaigne dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/04/2006, 10h20
  2. Performance SQL Server - lot DTS
    Par arno_web dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2006, 14h30
  3. pb : multiple rows in singleton select
    Par sillycoder dans le forum SQL
    Réponses: 6
    Dernier message: 12/06/2005, 16h35
  4. Réponses: 2
    Dernier message: 22/02/2005, 17h14
  5. Réponses: 3
    Dernier message: 25/01/2005, 12h31

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