Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1227 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL Transac Optimisation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL Transac Optimisation

n°1226844
benator
Posté le 20-10-2005 à 10:21:13  profilanswer
 

Bonjour,
voilà je ne sais pas trop si yen a qui pourront m'aider mais j'ai un petit soucis.
Voilà, je fais de l'optimisation de Transac SQL en utilisant le showplan.
 
J'ai une procédure stockée que j'exécute une première fois. Quand je regarde mon showplan, j'ai plus de 5 millions d' I/O pour mon dernier select (le select final sélectionne une date qu'il renvoie en output) et je met alors plusieurs minutes à avoir ma valeur de sortie. Il utilise alors un index qui n'a rien a voir avec la DT_CHERCHE
 
Jusq'ici tout va bien.
 
Je regarde alors les index existant et y en a un sur la table qui m'intéresse qui commence par les colonnes ID_BIDULE, DT_CHERCHE, AUTRE_COLONNE1, ...
 
Je crée donc un nouvel index avec juste les colonnes DT_CHERCHE et ID_BIDULE (dans cette ordre)
 
Je réexécute ma procédure stockée et la: je met moins d'une minute a avoir mon résultat et mon dernier  SELECTfais a peine 5000 I/O (les autres select de la proc ont alors également très fortement baissé)
 
Jusq'ici tout va bien
 
Je drop alors mon index "miracle" et je réexécute la proc, c la que je suis perdu:
Mon dernier SELECT  fait environ 5500 I/O mais je met à peine une quinzaine de secondes a avoir mon résultat, (les autres select de la proc eux ont réaugmentés de quelques millers d'I/O) le tout en utilisant désormais l'Index sur les DT_CHERCHE qui existait déjà!!!!
 
 
Pourquoi la proc n'utilise-t-elle donc pas automatiquement cette index???  
Pourquoi, avec bcp moins d'I/O mon index est-il plus lent à me donner le résultat??
 
(pour info je ne pense pas que les la mémoire cache joue, j'ai pris mes précautions..)
 
Merci de m'aider
++
 

mood
Publicité
Posté le 20-10-2005 à 10:21:13  profilanswer
 

n°1227060
cinocks
Posté le 20-10-2005 à 13:39:27  profilanswer
 

Déjà es-tu seul sur la machine?
 
Pour les index, il faut petu-etre voir du coté des statistiques. Lorsque tu lances une requete, le moteur va chercher le plan d'execution le plus efficace. Mais il se base sur les index existants et les stats pour faire son choix. Et ce sur un laps de temps imparti.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL Transac Optimisation

 

Sujets relatifs
Exécuter une chaîne de caractère en PL/SQL[Résolu][SQL]Résultat d'une requete dans variable.
EXtraire une valeur d'une requête SQL pour l'exploiter dans vba[Access/SQL] Syntax error converting the varchar value...
Casse Tête SQLErreur lors de la création d'une BD SQL sous win.
Aide requête SQL Accessen PL/SQL comment lire des informations dans un fichier INI
[SQL Server]Journal des transactions de TempDB[RESOLU][Access / SQL] Erreur OVERFLOW lors de l'update de ma BDD !
Plus de sujets relatifs à : SQL Transac Optimisation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR