Caro,
Voc� pode fazer o seguinte:
   No FROM colocar a tabela de maior volume de dados (tuplas) na frente,
   deixando em ordem decrescente.
   Todas as colunas identificadas pelo ALIAS da tabela
   Colocar na query binds ao inv�s de colocar diretamente o nome 'SAPATO'.
   Como alguns bancos dados t�m cache de querys. Assim, se um outro usu�rio
   precisar fazer a mesma consulta, se j� estiver no cache, j� estar�
   compilada pelo SGBD e n�o far� o 'parse' da query novamente.
   Trocar o  LIKE por BETWEEN da forma que segue no exemplo.
   Nas querys colocar sempre as restri��es na frente, depois os JOINS
   Verifique se os �ndices das tabelas citadas est�o ok. � IMPORTANTE  que
   a escrita da cl�usula  WHERE esteja escrita na ordem em o �ndice foi
   constru�do.
   Em �ltima inst�ncia criar um �ndice para a coluna DCR_PROD, se isso n�o
   tiver melhorado.

Espero ter ajudado.
Fl�vio B�rrios
Procenge

string: sCodPrdIni
string: sCodPrdFinal

Set sCodPrdIni = 'SAPATO'
Set sCodPrdFinal = 'SAPATO' || 'ZZZ'

SELECT
    A.COD_PRD,   A.DCR_PRD,     B.COD_LJA,    C.COD_DET,  C.QTD_ETQ ,
B.PRECO_VENDA
FROM
    TBL03 C, TBL02 B, TBL01 A
WHERE
    DCR_PRD BETWEEN :sCodPrdIni  AND :sCodPrdFinal
    A.CO = B.CO AND A.COD_PRD = B.COD_PRD AND
    B.CO = C.CO AND B.COD_PRD=C.CODPRD AND
    B.CODLJA = C.CODLJA






Sadepe Inform�tica <[EMAIL PROTECTED]> on 19/02/2000 10:36:36

Please respond to [EMAIL PROTECTED]

To:   [EMAIL PROTECTED]
cc:    (bcc: Flavio Barrios/Procenge)
Subject:  [sqlwin] Indices para Pesquisa




Caros colegas,

estou com um problema de performance numa query. Tentei algumas t�cnicas
para otimiza-la mas nao obtive exito.
Mostrarei abaixo um exemplo :


TBL01
--------------
CO
COD_PRD
DCR_PRD


TBL02
--------------
CO
COD_PRD
COD_LOJA
PRECO_VENDA

obs: Os precos s�o diferenciados para as lojas


TBL03
--------------
CO
COD_PRD
COD_LOJA
COD_DET
QTD_ETQ


obs: CODDET = detalhe do produto (tamanho, Cor, etc.)
       QTD_ETQ= quantidade de estoque do produto

Exemplo de Pesquisa:

SELECT
    A.COD_PRD,   DCR_PRD,     B.COD_LJA,    COD_DET,  QTD_ETQ , PRECO_VENDA
FROM
    TBL01 A,TBL02 B,TBL03 C
WHERE
    DCR_PRD LIKE "SAPATO%" and
    A.COD_PRD = B.COD_PRD AND
    B.COD_PRD=C.CODPRD AND
    B.CODLJA = C.CODLJA

resultado da pesquisa:


C�digo ; Descri��o ; Loja ; Detalhe ; Estoque ; Pre�o
---------------------------------------------------------------------------
----------------------
100 ;  SAPATO SANDALO COURO ;  1 ; PRETO ; 10 ; R$ 70,00
100 ;  SAPATO SANDALO COURO ;  2 ; PRETO ;  5 ;  R$ 75,00
100 ;  SAPATO SANDALO COURO ;  3 ; PRETO ;  0 ;  R$ 80,00
100 ;  SAPATO SANDALO COURO ;  1 ; MARROM ; 10 ; R$ 70,00
100 ;  SAPATO SANDALO COURO ;  2 ; MARROM ;  5 ;  R$ 75,00
100 ;  SAPATO SANDALO COURO ;  3 ; MARROM ;  0 ;  R$ 80,00
200 ;  SAPATO SAMELO COURO ;   1 ; PRETO ; 7 ; R$ 50,00
200 ;  SAPATO SAMELO COURO ;   2 ; PRETO ;  3 ;  R$ 65,00
200 ;  SAPATO SAMELO COURO ;   3 ; PRETO ;  2 ;  R$ 70,00
200 ;  SAPATO SAMELO COURO ;  1 ; BRANCO ; 7 ; R$ 50,00
200 ;  SAPATO SAMELO COURO ;   2 ; BRANCO ;  3 ;  R$ 65,00
200 ;  SAPATO SAMELO COURO ;   3 ; BRANCO ;  2 ;  R$ 70,00
.........
........
.......


O problema � o tempo da pesquisa (2 minutos) principalmente quando o numero
de lojas cresce(20 por exemplo).
A central de distribui��o precisa visualizar, ao mesmo tempo, o estoque do
produto em todas as lojas, quando a pesquisa
� feita pelo c�digo o tempo � aceit�vel mas pela descri��o � terrivel.

obs: a estrutura apresentada no exemplo � muito simples, deixando at� a
impress�o que a tbl02 n�o � necess�ria, mas outros campos � justificam.


O que eu poderia fazer para melhorar o tempo de pesquisa ?

Como eu poderia criar um �ndice adequado � pesquisa com essas tabelas ?

Agrade�o antecipadamente.


Reginaldo









Caros colegas,
 
estou com um problema de performance numa query. Tentei algumas t�cnicas para otimiza-la mas nao obtive exito.
Mostrarei abaixo um exemplo :
 
 
TBL01
--------------
COD_PRD
DCR_PRD
 
 
TBL02
--------------
COD_PRD
COD_LOJA
PRECO_VENDA
 
obs: Os precos s�o diferenciados para as lojas
 
 
TBL03
--------------
COD_PRD
COD_LOJA
COD_DET
QTD_ETQ
 
 
obs: CODDET = detalhe do produto (tamanho, Cor, etc.)
       QTD_ETQ= quantidade de estoque do produto
 
Exemplo de Pesquisa:
 
SELECT
    A.COD_PRD,   DCR_PRD,     B.COD_LJA,    COD_DET,  QTD_ETQ , PRECO_VENDA
FROM
    TBL01 A,TBL02 B,TBL03 C
WHERE
    DCR_PRD LIKE "SAPATO%" and
    A.COD_PRD = B.COD_PRD AND
    B.COD_PRD=C.CODPRD AND
    B.CODLJA = C.CODLJA
 
resultado da pesquisa:
 
 
C�digo ; Descri��o ; Loja ; Detalhe ; Estoque ; Pre�o
-----------------------------------------------------------------------------------------------
100 ;  SAPATO SANDALO COURO ;  1 ; PRETO ; 10 ; R$ 70,00
100 ;  SAPATO SANDALO COURO ;  2 ; PRETO ;  5 ;  R$ 75,00 
100 ;  SAPATO SANDALO COURO ;  3 ; PRETO ;  0 ;  R$ 80,00
100 ;  SAPATO SANDALO COURO ;  1 ; MARROM ; 10 ; R$ 70,00
100 ;  SAPATO SANDALO COURO ;  2 ; MARROM ;  5 ;  R$ 75,00 
100 ;  SAPATO SANDALO COURO ;  3 ; MARROM ;  0 ;  R$ 80,00
200 ;  SAPATO SAMELO COURO ;  1 ; PRETO ; 7 ; R$ 50,00
200 ;  SAPATO SAMELO COURO ;   2 ; PRETO ;  3 ;  R$ 65,00 
200 ;  SAPATO SAMELO COURO ;   3 ; PRETO ;  2 ;  R$ 70,00
200 ;  SAPATO SAMELO COURO ;  1 ; BRANCO ; 7 ; R$ 50,00
200 ;  SAPATO SAMELO COURO ;   2 ; BRANCO ;  3 ;  R$ 65,00 
200 ;  SAPATO SAMELO COURO ;   3 ; BRANCO ;  2 ;  R$ 70,00
.........
........
.......
 
 
O problema � o tempo da pesquisa (2 minutos) principalmente quando o numero de lojas cresce(20 por exemplo).
A central de distribui��o precisa visualizar, ao mesmo tempo, o estoque do produto em todas as lojas, quando a pesquisa
� feita pelo c�digo o tempo � aceit�vel mas pela descri��o � terrivel.
 
obs: a estrutura apresentada no exemplo � muito simples, deixando at� a impress�o que a tbl02 n�o � necess�ria, mas outros campos � justificam.
 
 
O que eu poderia fazer para melhorar o tempo de pesquisa ?
 
Como eu poderia criar um �ndice adequado � pesquisa com essas tabelas ?
 
Agrade�o antecipadamente.
 
 
Reginaldo
 
 
 
 
 
 
 
 

Responder a