Pourquoi oracle tableau indexé, mais encore ne full table scan?

J'ai une table 'MSATTRIBUTE' avec 3000K lignes. J'ai utilisé la requête suivante pour récupérer les données, cette requête a différents plan d'exécution avec la même DB de données, mais dans différentes env. dans un env, il ressort de l'analyse complète de sorte que la requête est très lent, mais dans un autre env tout utilisé d'analyse d'index, c'est très bon, tout le monde qui sait pourquoi il ont plein balayage de table dans un env parce que j'ai construit l'index pour eux, comment puis-je laisser devenir index scan, tout comme ce que j'ai testé dans env 1. comment je peux améliorer cette requête?

N'est-ce pas 3000K == 3M ? 😉
Merci. oui, exactement.
A l'index a été ajouté récemment (c'est pas clair pour moi), et si oui, avez-vous recueilli des statistiques depuis? Vous pouvez vérifier la last_analyzed colonne de all_tables et all_indexes; pour un nouvel indice, ce dernier peut être null. L'optimiseur peut ne pas envisager d'utiliser l'index si c'est le cas.
L'index est-il présent dans tous les milieux? Êtes-vous d'utiliser la même version du logiciel, dans tous les milieux? Quels sont vos environnements?
l'indice a été construit lors de la création de la table, de sorte qu'il n'a pas été ajouté récemment. les données est la même, j'utilise imp/exp importer à partir d'une base de données(env) et de l'exporter vers un autre env, la seule différence est l'une env, oracle 11g R1 qui a utilisé full table scan, une autre base de données qui a utilisé l'indice de scan est 11g R2, mais je pense que cette petite version de la différence ne serait pas affecter l'exécution du plan.

OriginalL'auteur C.c | 2013-01-23