[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