|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité de passage
![]() Vincent Inscription : mai 2010 Messages : 8 ![]() |
Bonjour,
Sur plusieurs serveurs ASE 15.5, nous avons une table T de 5 Millions de rows avec le DDL suivant: Citation:
Code :
SELECT * FROM T WHERE T.logOnDtm >= '20120309' AND T.logOnDtm < '20120310' Code :
Note1: forcer l'index fonctionne = l'index est utilisé Note2: j'ai essaye plusieurs formats de dates et même de char() sans succes. Merci Vincent |
|||
|
|
00
|
|
|
#2 |
![]() ![]() |
Lorsqu'on n'est pas dans une proc stockée ASE ne fait pas d'interpolation des variables, et donc va utiliser une heuristique assez basique pour déterminer si les indexes sont intéressants.
En général la seule solution est de forcer l'index. 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 |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Vincent Inscription : mai 2010 Messages : 8 ![]() |
Merci Michael.
Je viens de tester ce code dans une stored procedure et l'index n'est malheureusement pas utilisé. En forcant l'index ca fonctionne mais je n'arrive pas a comprendre pourquoi l'optimizer n'essaie pas d'abord d'evaluer un plan avec l'index d'autant que les variables sont definis comme variables statiques au debut du code. Ce n'est pas comme si les variables changeaient tout le temps comme dans un curseur. Est-ce que le parser Sybase ne commence-t-il par remplacer les valeurs statiques dans le code avant d'evaluer le query plan d'execution? Merci, Vincent |
|
|
00
|
|
|
#4 | ||||
|
Invité de passage
![]() Vincent Inscription : mai 2010 Messages : 8 ![]() |
J'ai supprimé les deux index suivants que j'avais sur la table:
Code :
=> cela fonctionne desormais = la query utilise index La question est donc: - est-ce un probleme de design d'index de la part du developeur? - est-ce que mon index clusterise etait trop defragmenté alors que j'utilisais l'index non-clusterisé? Le cluster ratio des 2 index etaient: Code :
|
||||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com