[firebase-br] Forçando indíces
    Alexandre Sousa 
    alexandre.dantas em yahoo.com.br
       
    Qua Fev  6 15:26:10 -03 2008
    
    
  
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
    
    
Mais detalhes sobre a lista de discussão lista