Select demorado

Firebird

18/07/2005

iai galera blz...
estou com um problema em um select quando executo esse select

select ITENS_TAB_PRECO.COD_PRODUTO,
PRODUTOS_ACABADOS.DESCRICAO,
ITENS_TAB_PRECO.PRECO_VENDA,
ITENS_TAB_PRECO.DESCONTO,
ITENS_TAB_PRECO.DESCONTO_MAX_GERENTE,
ITENS_TAB_PRECO.DESCONTO_MAX_VEND,
ITENS_TAB_PRECO.CODIGO

from PRODUTOS_ACABADOS

left OUTER JOIN itens_tab_preco ON
(PRODUTOS_ACABADOS.CODEMP = 1) AND
(ITENS_TAB_PRECO.cod_produto = PRODUTOS_ACABADOS.codigo)


where ( ITENS_TAB_PRECO.CODEMP = 1 ) AND
( ITENS_TAB_PRECO.cod_tab = :COD )

sai blz.... super rapido mas quando coloco

order by PRODUTOS_ACABADOS.DESCRICAO

ai esse mesmo select demora até 3 segundos o que pode ser ???
onde estou errando ??? declarei indices acendi velas dancei a dança da chuva e nada alguem poderia me ajudar ??


Juniorcesar

Juniorcesar

Curtidas 0

Respostas

Rafael Santana

Rafael Santana

18/07/2005

ao invés de colocar o nome do campo, no order by, colo o número referencial...ficaria assim


order by 2


GOSTEI 0
Sremulador

Sremulador

18/07/2005

bem outro problema pode ser este de left outer join pois dependendo das condições da tabela pesquisada ele pode levar uma eternidade...


GOSTEI 0
Afarias

Afarias

18/07/2005

ORDER BY podem ser lentos realmente, quando isto ocorre, pode ser mais vantajoso fazer a ordenação no cliente.


T+


GOSTEI 0
Juniorcesar

Juniorcesar

18/07/2005

ORDER BY podem ser lentos realmente, quando isto ocorre, pode ser mais vantajoso fazer a ordenação no cliente. T+

como assim ??
pode ser mais vantajoso fazer a ordenação no cliente.

como poderia fazer isso ??


GOSTEI 0
Afarias

Afarias

18/07/2005

|pode ser mais vantajoso fazer a ordenação no cliente.
|como poderia fazer isso ??

Após recuperar os registros no cliente, vc pode ordená-los como desejar, isso pode ser em muitos casos mais eficiente que usar o servidor para fazer a ordenação.

Qualquer DataSet de memória faz ordenação de registros (a qualquer momento e por qualquer campo) com alta eficiência.

´Infelizmente´ alguns DataSets não possuem capacidade de ordenação do buffer (como é o caso do IBX) mas vc pode usar um ClientDataSet ou outra tabela de memória para isso.


T+


GOSTEI 0
POSTAR