Comment faire pour forcer oracle de ne pas utiliser un index
J'ai une exigence à laquelle j'ai du forcer le sql de ne pas utiliser un index particulier qui existe sur une table.
par exemple,
create table t1(id varhcar2(10),data1 varchar2(3000));
create table t2(id varhcar2(10),data2 varchar2(3000));
create index id1 on t1(id);
select * from t1,t2 where t1.id=t2.id;
Je ne peux pas supprimer l'index id1 et ni tomber je n'ai pas les droits sur elle. donc je veux ajouter une sorte de soupçon d'éviter de l'utiliser..
Est-il un tel soupçon, ou est-il une solution de contournement pour ce.
Merci d'avance
OriginalL'auteur Fr_nkenstien | 2013-06-17
Vous devez vous connecter pour publier un commentaire.
utilisation NO_INDEX soupçon
http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements006.htm#BABHJBIB
par exemple
OriginalL'auteur Dmitry Bychenko
Il y a un principe général que, pour chaque requête pour laquelle vous souhaitez spécifier le plan de l'exécution, vous besoin de quelque chose comme deux ou trois conseils par table.
Dans ce cas, vous êtes probablement à la recherche d'une jointure de hachage résultant de deux analyses de la table, ce qui est relativement simple de sorte que le soupçon bloc serait quelque chose comme:
OriginalL'auteur David Aldridge
Vous pouvez empêcher l'utilisation d'un index sur une colonne sans conseils, par application d'une fonction à elle. Vous aurez envie d'utiliser un "no-op" la fonction pour les valeurs de la colonne ne sont pas modifiées. Pour les chiffres, cela pourrait être l'ajout de zéro, pour cordes avec l'ajout de la chaîne vide:
select * from t1,t2 where t1.id || '' =t2.id;
OriginalL'auteur Chris Saxon