Jump to content
Fórum Script Brasil
  • 0

Índice em Funções


Gusmon
 Share

Question

Boa tarde a todos,

Eu trabalho com Oracle e estou fazendo trabalhos para faculdade com PostgreSQL, sempre achei o Oracle um bom banco, mas, depois que comecei a trabalhar com PostgreSQL achei melhor que o Oracle em tudo(traduzindo dá uma surra no Oracle), só que uma coisa não consegui rodar como esperado. Eu criei uma function para remover acentos e transformar letras em números e para ficar rápido criei uma Index para mesma, no PostgreSQL ele não está utilizando Index Scan nas tabelas, eu tenho de setar algo extra?

No Oracle eu fiz assim:

Create index nome_do_index

on nome_tabela(funcao(campo));

Eu criei a mesma index no PostgreSQL mas ele não faz index scan na comparação: select * from nome_tabela where funcao(campo) ~ '10040(.+)|206?2500'

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Quando você usa uma expressão regular não há como procurar no índice. É o mesmo caso do LIKE '%texto%'. Como o texto pode estar em qualquer posição o índice é inútil. Ele poderia usar o índice se fosse LIKE 'text%' porque aí ele saberia que o texto procurado está no começo da string. No seu caso você pode tentar ~ '^100040 etc' para ver se ele usa o índice. Não sei.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.8k
    • Total Posts
      648.7k
×
×
  • Create New...