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

Sybase Discussion :

Lenteur sur Select


Sujet :

Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 41
    Par défaut Lenteur sur Select
    Bonjour,

    J'ai un select qui met beaucoup de temps à s'executer : j'ai donc commencé par faire un count(*) avant de lister les champs dont j'ai besoin et voici le résultat sur une petite période :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT
      count(*)
    FROM ordremission 
    WHERE odmdhcreat >= '20080510'
    *****************************************************
    Resultat = 2381
    *****************************************************
    Parse and Compile Time 0. 
    SQL Server cpu time: 0 ms.
     
    Execution Time 45. 
    SQL Server cpu time: 4500 ms.  SQL Server elapsed time: 822173 ms.
    (1 row affected)
    J'ai vu qu'il n'y a pas d'index sur la colonne 'odmdhcreat', j'ai fait un sp_helpindex cf ci-dessous, serait-ce une bonne solution ?
    Que faire d'autre SVP ? Merci de votre aide !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sp_helpindex ordremission
    **************************
    ordremission_pk      clustered, unique located on default                      odmid
    ordremission_fk1     nonclustered located on default                           prsid
    ordremission_uk1     nonclustered located on default                odmcdoccas

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Il est clair que sans index sur odmdhcreat ASE doit faire un table scan.

    Avec un index il pourra (probablement fortement) réduire le nombre d'IO (suivant la taille de la table, et sa structure il pourrait s'agir d'un facteur 10 voir 100 ou plus...).

    Il n'y a à priori pas vraiment d'autre optimization possible pour cette requête.

    Michael

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut Aide sur les index ?
    Merci pour la réponse !

    Je me pose justement des questions sur la mise en place des index : la base de données utilisée dans ma requête (select) est une copie à J-1 de celle de production qui ne comporte par d'index sur la colonne qui m'interesse dans ma clasue where (odmdhcreat). Il faudrait donc que j'ajoute un index sur la base de production si je souhaite améliorer les performances de ma requête : est-ce que cela aura un impact nuisible sur l'utilisation de la base de production (ralentissement) car j'ai lu sur le site de Sybase que :

    L'ajout d'index soigneusement choisis dans une base de données bien conçue permet d'obtenir d'excellentes performances avec Adaptive Server. Celles-ci peuvent cependant baisser si vous ajoutez des index sans avoir procédé à une analyse adaptée. De plus, les insertions, mises à jour et suppressions peuvent prendre plus de temps si un grand nombre d'index doit être mis à jour. D'une manière générale, n'ajoutez pas d'index qui ne se justifie pas.

    http://manuals.sybase.com/onlinebook...T_RESTART_N%25

    Comment le savoir ?
    D'une façon générale, faut-il créer des index sur toutes les clés primaires et étrangères ?
    Merci encore !

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    L'ajout d'un index implique plus de travail lorsque la table est modifiée (insert/update/delete) puisque ce nouvel index doit être mis à jour.

    Une solution alternative serait d'inclure la création de l'indexe dans le processus de copie de la J-1 (donc après le load database)

    Michael

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut
    Oui effectivement je vais faire des tests poour voir si cela accélère les performances des traitements (select) et en tenant compte du temps de création journalier de cet index.

  6. #6
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 46
    Par défaut Résolu
    Je ne trouve pas l'endoit en bas de page où cocher l'option "Résolu" pour cette discussion...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/12/2010, 11h30
  2. Probleme de lenteur sur selection de date
    Par Avatar69 dans le forum Développement
    Réponses: 5
    Dernier message: 08/01/2010, 11h17
  3. Déclenchement sur select
    Par sdinot dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 02/04/2004, 11h52
  4. Trigger sur select
    Par bilo2000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/02/2004, 13h39
  5. question sur SELECT ...WHERE...IN
    Par danseur dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/01/2004, 15h23

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