Fórum Duvida em Indices #26515
03/02/2006
0
E ai galera!
Alguem sabe me dizer como fasso para saber em qual campo devo usar um indice para que uma consulta fique mais rapida.
Aproveitando quando a sequencia dos campos. Nas condição fazem alguma diferencia em relação em qual colocar primeiro
tenho a seguinte SQL e esta lenta
obs: uso Postgres e a maiores tabelas são as ´CADASTRO MOVEXA´
e ´CADASTRO MOVEXACO´
se alguem puder me ajudar desde já agradeço
Audio.SQL.Clear;
Audio.SQL.Add(´SELECT´);
Audio.SQL.Add(´exa.´DATA´,´);
Audio.SQL.Add(´exa.´FUNCIONARIO´,´);
Audio.SQL.Add(´exa.´EMPRESA´,´);
Audio.SQL.Add(´exa.´CHAVE´,´);
Audio.SQL.Add(´exa.´CLINICO´,´);
audio.SQL.Add(´exa.´TIPO´,´);
audio.SQL.Add(´exa.´FUNCAO´,´);
audio.SQL.Add(´exa.´SETOR´,´);
audio.SQL.Add(´mov.´CODEXA´,´);
audio.SQL.Add(´mov.´TIPO´,´);
audio.SQL.Add(´mov.´DATA´,´);
audio.SQL.Add(´mov.´RETORNO´,´);
Audio.SQL.Add(´fun.´NOME´ AS NMFUNCIONARIO,´);
Audio.SQL.Add(´emp.´NOME´ AS NMEMPRESA´);
Audio.SQL.Add(´FROM ´CADASTRO MOVEXA´ exa´);
Audio.SQL.Add(´LEFT JOIN ´CADASTRO EMPRESAS´ emp ON exa.´EMPRESA´ = emp.´CODIGO´´);
Audio.SQL.Add(´LEFT JOIN ´CADASTRO MOVEXACO´ mov ON exa.´CHAVE´ = mov.´CHAVE´ and mov.´TIPO´ = ´´1´´´);
Audio.SQL.Add(´LEFT JOIN ´CADASTRO FUNCIONA´ fun ON exa.´FUNCIONARIO´ = fun.´CODIGO´´);
Audio.SQL.Add(´ WHERE exa.´TIPO´ = ´´Normal´´´);
Audio.SQL.Add(´ AND mov.´DATA´ >= ´´´ + FormatDateTime(´yyyy/mm/dd´, vdatini) + ´´´´);
Audio.SQL.Add(´ AND mov.´DATA´ <= ´´´ + FormatDateTime(´yyyy/mm/dd´, vdatfin) + ´´´´);
Audio.SQL.Add(´ AND mov.´CODEXA´ = ´ + IntToStr(vExames[Combobox2.ItemIndex]));
if CurrencyEdit1.Value <> 0 then audio.SQL.Add(´ AND exa.´EMPRESA´ = ´´´+CurrencyEdit1.Text+´´´´);
audio.SQL.Add(´ORDER BY exa.´EMPRESA´, mov.´DATA´´);
If Audio.Active then Audio.ExecSQL else Audio.Open;
Alguem sabe me dizer como fasso para saber em qual campo devo usar um indice para que uma consulta fique mais rapida.
Aproveitando quando a sequencia dos campos. Nas condição fazem alguma diferencia em relação em qual colocar primeiro
tenho a seguinte SQL e esta lenta
obs: uso Postgres e a maiores tabelas são as ´CADASTRO MOVEXA´
e ´CADASTRO MOVEXACO´
se alguem puder me ajudar desde já agradeço
Audio.SQL.Clear;
Audio.SQL.Add(´SELECT´);
Audio.SQL.Add(´exa.´DATA´,´);
Audio.SQL.Add(´exa.´FUNCIONARIO´,´);
Audio.SQL.Add(´exa.´EMPRESA´,´);
Audio.SQL.Add(´exa.´CHAVE´,´);
Audio.SQL.Add(´exa.´CLINICO´,´);
audio.SQL.Add(´exa.´TIPO´,´);
audio.SQL.Add(´exa.´FUNCAO´,´);
audio.SQL.Add(´exa.´SETOR´,´);
audio.SQL.Add(´mov.´CODEXA´,´);
audio.SQL.Add(´mov.´TIPO´,´);
audio.SQL.Add(´mov.´DATA´,´);
audio.SQL.Add(´mov.´RETORNO´,´);
Audio.SQL.Add(´fun.´NOME´ AS NMFUNCIONARIO,´);
Audio.SQL.Add(´emp.´NOME´ AS NMEMPRESA´);
Audio.SQL.Add(´FROM ´CADASTRO MOVEXA´ exa´);
Audio.SQL.Add(´LEFT JOIN ´CADASTRO EMPRESAS´ emp ON exa.´EMPRESA´ = emp.´CODIGO´´);
Audio.SQL.Add(´LEFT JOIN ´CADASTRO MOVEXACO´ mov ON exa.´CHAVE´ = mov.´CHAVE´ and mov.´TIPO´ = ´´1´´´);
Audio.SQL.Add(´LEFT JOIN ´CADASTRO FUNCIONA´ fun ON exa.´FUNCIONARIO´ = fun.´CODIGO´´);
Audio.SQL.Add(´ WHERE exa.´TIPO´ = ´´Normal´´´);
Audio.SQL.Add(´ AND mov.´DATA´ >= ´´´ + FormatDateTime(´yyyy/mm/dd´, vdatini) + ´´´´);
Audio.SQL.Add(´ AND mov.´DATA´ <= ´´´ + FormatDateTime(´yyyy/mm/dd´, vdatfin) + ´´´´);
Audio.SQL.Add(´ AND mov.´CODEXA´ = ´ + IntToStr(vExames[Combobox2.ItemIndex]));
if CurrencyEdit1.Value <> 0 then audio.SQL.Add(´ AND exa.´EMPRESA´ = ´´´+CurrencyEdit1.Text+´´´´);
audio.SQL.Add(´ORDER BY exa.´EMPRESA´, mov.´DATA´´);
If Audio.Active then Audio.ExecSQL else Audio.Open;
Biodelphi
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)