-
[Sql] index sur vue
bonjour
j'ai une vue qui permet de reformatter certaine colonne de ma table.
cependant la table est assez grosse.
et si je fais une opération de trie sur cette colonne le temps de réponse est assez decevant...
y a t il un moyen de mettre un index ou un truc dans le genre sur cette colonne
merci.
-
petite précision le formatte consite à transformer la valeur décimale d'une colonne en hexadécimale.
-
Une vue n'est qu'un ordre select sur une table ou une jointure de tables. S'il la requête est mal optimisée, ajoutez les indexes sur les tables concernées par la vue.
-
Il faut également voir si tu ne fais pas bcp trop de tri
-
Ma vue est exactement ma table
sauf que pour une colonne je mets un to_char(colonne,'0xxxxxx')
et des que je dait un order by sur cette colonne de la vue que les perfs
sont vraiment pas bonne.
Alors que sur les autres colonnes ou il y a un trie et ou j'ai mis un index c'est ok.
-
Tu a une fonction sur cette colonne. Il est normal qu'Oracle ne se serve pas d'un index.
Pouravoir de meilleur performance il te faut créer un index fonction .
Il faut savoir que cette index fonction ne pourrat être utilisés que pour cette fnction et non pas pour une autre :
Index fonction et utilisation des index
-
To_char() sur une colonne de type NUMBER ou DATE n'utilise plus l'éventuel index, à moins que vous n'ayez créé un index de fonction.
-
oui j'ai cree un index de cette facon :
ON matable(to_char(macolonne,'0xxxxx'))
mais pas de changement de perf
c'est ca que tu appelles index de fonction???
merci en tout ca pour tes reponses.
-
Oui, c'est bien cela.
Les raisons pour lesquelles un index n'est pas utilisé peuvent être nombreuses
Cardinalité insuffisante
FULL SCAN estimé plus rapide
Statistiques non calculées ou trop anciennes
HINT forcé dans la requête
index non valide
....