Estou com um problema no oracle com indice, tenho um campo que o usuário buscar por nome que é usado a clausula LIKE "%texto%", quando utiliza essa clausula ele não busca pelo indice mas se eu procuro por "texto%", ele busca pelo indice… alguem ja teve esse problema
Primeiro eu peço uma lista de todas as palavras que começam com “pata” (Equivalente a like ‘pata%’).
Como procuraria? Iria na letra p, depois em pa, e assim por diante até achar todas palavras começando com “pata”.
Quando chegasse em alguma palavra com “pate”, saberia que não tem mais nada sobrando e acabou sua busca.
Agora eu peço uma lista de todas as palavras que contenham o trecho “pata” (Equivalente a like ‘%pata%’)
O que faria nesse caso? Teria que olhar todo o dicionário para ter certeza não?
O esquema do indíce é similar. Como o oracle terá que conferir cada trecho de todas as linhas ele fará simplesmente um full table scan.
Para pesquisas em texto você pode procurar por material sobre “oracle full text search”.
É um mecanismo melhor para fazer buscas em texto que além de utilizar indices, consegue ignorar acentos, trazer resultados por relevância, etc.