2009-10-08 5 views
1

Si je crée un index inverse dans Oracle sur une colonne VARCHAR2, dois-je également inverser la valeur utilisée dans la clause WHERE?Oracle reverse index et requête

CREATE INDEX myindex ON myTable(name) REVERSE; 

SELECT name FROM myTable WHERE name='Peter'; 

ou

SELECT name FROM myTable WHERE name='reteP'; 

Répondre

2

Vous en avez besoin pour améliorer la distribution des données. Comme, beaucoup de noms de films commencent par The ce qui dégraderait les performances de l'index.

Vous n'avez pas besoin d'inverser la condition: Oracle le fera pour vous automatiquement.

Cependant, vous ne pouvez pas faire des requêtes de gamme plus:

SELECT name FROM myTable WHERE name BETWEEN 'A' AND 'C' 

se traduira par une analyse complète

+0

Merci - c'est un peu ce que j'ai pensé. – Gandalf

0

Non, vous ne - voyez Burleson pour le plein maigre.

5

La valeur que vous recherchez est « Peter ». Si vous recherchez 'reteP', vous ne retournerez aucune ligne (ou du moins pas les lignes que vous recherchez).