Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2008, 15h40   #1
Futur Membre du Club
 
Inscription : novembre 2006
Messages : 41
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 41
Points : 17
Points : 17
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 :
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 :
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
remys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h19   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 10h14   #3
Membre à l'essai
 
Inscription : juillet 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 47
Points : 22
Points : 22
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 !
remy77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 15h57   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 16h11   #5
Membre à l'essai
 
Inscription : juillet 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 47
Points : 22
Points : 22
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.
remy77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2008, 16h20   #6
Membre à l'essai
 
Inscription : juillet 2007
Messages : 47
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 47
Points : 22
Points : 22
Par défaut Résolu

Je ne trouve pas l'endoit en bas de page où cocher l'option "Résolu" pour cette discussion...
remy77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h47.


 
 
 
 
Partenaires

Hébergement Web