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

Oracle Discussion :

[O8i]update et performances


Sujet :

Oracle

  1. #41
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Points : 926
    Points
    926
    Par défaut
    J'en suis de plus en plus persuadé : cet index sur txCptNom n'est pas utile car il rammène plus de 80% de la table. Il faut l'étendre aux deux autres colonnes pour qu'il soit utile au moins pour cette requête.
    Je suis d'accord avec Lalystar.

    Pour Fadace, le mieux est de faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select count (*), count (distinct cdoldcai), count (distinct nboldval), count (distinct txcptnom) from gfucvtp ;
    Comme cela, tu vois le nombre d'occurrences et de valeurs distinctes rencontrées dans la table. Tu vois quelles sont les colonnes à faible ou forte cardinalité, et tu peux ainsi choisir tes colonnes pour créer l'index composite le plus sélectif possible.

    Ce qui est un peu embêtant dans ton modéle, c'est le fait d'avoir NoAss de la table FUSASS en CHAR(6), alors que le champ nbOldVal de la table GFUCVTP est un NUMBER, d'où l'utilisation du TO_CHAR. Mais bon, peut on y remédier ?

    N'oublie en final d'avoir :
    - une table sans ligne chaînée (hier, je t'avais demandé de regarder FUSASS, car cela ralentit l'Update), mais regarde aussi GFUCVTP (car si tu as des lignes chaînées, le SELECT de la requête imbriquée est long lui aussi),
    - les bons index, aussi sélectifs que possible,
    - d'avoir les statistiques à jour et que ton optimiseur Oracle fonctionne en mode CBO.

  2. #42
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Fadace, c'est déjà bcp mieux !

    Sinon, juste un petit mot pour te dire de mettre timed_statistics à true quand tu fais des générations de fichier de trace afin d'avoir les temps de renseignés (tu peux le faire par un alter session).


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  3. #43
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Fadace,


    Vu que dans 80% des cas la colonne txcptnom vaut 'MACLE', je pense qu'il serait encore plus profitable de créer ton index avec compress à 1 pour factoriser cette valeur. Sinon Rouardg a raison, les types des colonnes n'étant pas les mêmes, la colonne qui n'a pas le même type devrait être en troisième position.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  4. #44
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    STOP et merci à tous !

    J'ai palié au problème en nettoyant les données de manière à pouvoir remplacer la clause to_char placée sur la plus grosse table par une to_number placée sur la petite table.

    Résultat des courses => update en moins de 20 sec.
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  5. #45
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut



    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/10/2007, 09h15
  2. [AJAX] performances fortement diminuées avec un Update panel (et IE)?
    Par cortex024 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/06/2007, 12h40
  3. [9i] Performance requete UPDATE + IN
    Par bob33 dans le forum Oracle
    Réponses: 12
    Dernier message: 26/10/2006, 15h22
  4. Problème de performance Update de 60 mille lignes.
    Par ludvax dans le forum Oracle
    Réponses: 15
    Dernier message: 03/07/2006, 10h41
  5. performance delete/insert vs update
    Par Dionisos dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/08/2005, 18h23

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