[firebase-br] Forçando indíces

Marcelo Papuska krpmate em gmail.com
Sex Fev 8 00:44:22 -03 2008


Oi Alexandre.

ate onde sei, a ordem de where e order by deve ser de acordo com o indice,
isto talvez ajude na performance.
2008/2/6 Alexandre Sousa <alexandre.dantas em yahoo.com.br>:

> Olá a todos,
>
> Reabrindo um tópico que ja apareceu na lista mas que não achei resposta.
>
> Tenho a seguinte consulta:
>
> select pr.PRODUTO, pr.PR_DESCR, pr.EMPENHO, pr.REFER1, pr.EST_MIN,
>  pr.PESO, pr.ESTOQUE, pr.QT_SM, pr.CUSTO, pr.VL_MEDIO, pr.UMREF,
>  pr.GRUPO, pr.SUBGRUPO
> from PRODUTO pr
> where
>  (((pr.TIPO_MOVES = 1) and (:OMITE = 1)) or (:OMITE = 0)) and
>  (((pr.MERCADO = 0) and (:MERCADO = 1)) or (:MERCADO = 0)) and
>  (pr.PRODUTO like :PRODUTO)
>
> Devido a estrutura parametrizada e o uso do like, o firebird não utiliza o
> indice que tenho no campo PRODUTO.
>
> Tentei forçar o indice utilizando a instrução PLAN da seguinte forma:
>
> select pr.PRODUTO, pr.PR_DESCR, pr.EMPENHO, pr.REFER1, pr.EST_MIN,
>  pr.PESO, pr.ESTOQUE, pr.QT_SM, pr.CUSTO, pr.VL_MEDIO, pr.UMREF,
>  pr.GRUPO, pr.SUBGRUPO
> from PRODUTO pr
> where
>  (((pr.TIPO_MOVES = 1) and (:OMITE = 1)) or (:OMITE = 0)) and
>  (((pr.MERCADO = 0) and (:MERCADO = 1)) or (:MERCADO = 0)) and
>  (pr.PRODUTO like :PRODUTO)
>
> PLAN (PR INDEX (IDX_PRODUTO))
>
> mas obtive o seguinte erro:
>
>  index  cannot be used in the specified plan
>  .
>  index RDB$PRIMARY54 cannot be used in the specified plan.
>
>
> Alguém tem alguma idéia?
>
> Desde já agradeço.
>
>
> Att.
>
> Alexandre Sousa Dantas
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista