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

SQL Oracle Discussion :

"Insert first" et performance ?


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 111
    Par défaut "Insert first" et performance ?
    Bonjour à tous,

    pour éviter que le chargement d'un fichier d'input, qui peut contenir des champs mal formatés, ne plante complètement, je pense utiliser la fonction "insert first". Dans le 1er when, je réaliserais un check sur certaines colonnes. S'ils échouent, je dumpe le record dans une table corbeille. Sinon j'insère le record dans la bonne table.

    Certains d'entre vous utilisent-ils cette fonction ? Sur des tables de quelle envergure ? Combien de check réalisez-vous ? Cela a-t-il eu un impact sur les performances ?

    Toutes vos remarques sur le sujet sont les bienvenues !

    D'avance, je vous remercie pour vos réponses ; )

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 995
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 995
    Billets dans le blog
    6
    Par défaut
    INSERT FIRST n'existe pas dans le langage SQL !

    Aucune notion d'ordre n'existe dans une base de données relationnelle car les tables reposent sur des ensembles mathématique dans lesquels toute notion d'ordre est proscrite.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 111
    Par défaut
    Oui je pense que j'aurais du poser ma question dans le forum oracle ...

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Vous est en quelle version d'Oracle ?

  5. #5
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    En terme de performance, l'evaluation de la clause when n'a pas de gros impact. Juste un peu de CPU. Ce sera de toute facon plus performant que les autres alternatives:
    - lire une première fois les données d'input pour vérifier, puis les relire pour insérer les enregistrements corrects
    - tout inserer puis delete ceux qui ne sont pas corrects
    - faire l'insert par une procédure pl/sql qui vérifie et loggue les erreurs au fur et à mesure

    Une autre alternative, mais je pense equivallente en terme de performance, c'est de faire ces contrôles en une contrainte d'intégrité, si c'est possible, et si ils concernent tout insert et pas ceulement ce chargement de fichier, et de faire un INSERT ...LOG ERRORS INTO


    SQLpro, INSERT ALL et INSERT FIRST ce sont des inserts multitables (depuis la 9i). 'FIRST' fait référence à l'ordre des clauses WHEN, pas à un ensembles mathématique

    Cordialement,
    Franck.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 111
    Par défaut
    Merci pour ta réponse.

    En continuant un peu mes recherches, je suis tombé sur un article parlant de cette instruction (log error). Elle semble en effet très intéressante. Une piste à creuser donc ; )

Discussions similaires

  1. Insertion quote et double quote
    Par Ebisu dans le forum SQL*Loader
    Réponses: 8
    Dernier message: 08/10/2008, 17h41
  2. Insertion de quotes et de guillemets
    Par anikeh dans le forum Access
    Réponses: 15
    Dernier message: 26/01/2007, 13h21
  3. [Wamp] Problème d'insertion avec quote d'un formulaire
    Par cyberdevelopment dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/08/2006, 18h55
  4. [VBnet][Access] Requete imbriquee "insert + select"
    Par Fab62_ dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/03/2006, 13h58

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