Erasmo,
Hj utilizamos o SqlBase 7.5.1, PostGreSQL 8 beta 5, Oracle 8.1.7, e CTD 2000 como ferramenta de desenvolvimento.
Com o Oracle, e SqlBase existe uma diferen�a no tempo de resposta para menor, qdo n�o se utiliza vari�veis BIND, e para o  PostgreSql como n�o tem conex�o nativa � ODBC, melhora e muito, qdo n�o se utiliza var�veis BIND.
Mas a n�o utiliza��o de vari�veis BIND foi sugerida, h� algum tempo por funcion�rios da empresa que fornece o SqlWindows/CTD e s�o desenvolvedores tamb�m, pois foram feitos testes, e o tempo de resposta para comandos que n�o utilizavam vari�veis BIND � menor.
 
Agrade�o as dicas, farei mais alguns testes.
Abra�os,
Haroldo.
 
 
 
 
 
-----Mensagem original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]Em nome de Erasmo
Enviada em: s�bado, 4 de dezembro de 2004 10:28
Para: [EMAIL PROTECTED]
Assunto: Re: [sqlwin] comandos SQL

Haroldo,

Me desculpe, n�o sei se o que voc� comentou � verdade para o SQLBase (acho que � esse SGBD que vc est� utilizando), mas eu posso lhe garantir com toda certeza que para Oracle � "p�ssimo" fixar valores nos selects, com certeza a performance � muito melhor utilizando vari�veis bind, principalmente se o processo for repetitivo. Pode perguntar a qualquer DBA.

Todo comando a ser executado passa por pelo menos duas fases, a Compila��o e a Execu��o (no select existe a terceira fase, a Busca), em qualquer SGBD inteligente, os comandos mais utilizados ficam armazenados pr�-compilados, ou seja, para estes comandos o SGBD sempre pular� a fase de compila��o ganhando um tempo enorme no geral, mas isso s� � poss�vel se for utilizado vari�veis bind, pois com valores fixos anexados aos comandos, cada um deles ser� diferente do outro, ou seja, o SGBD ser� obrigado a compilar todo comando novamente. Pode-se n�o perceber isso rodando uma transa��o simples, mas quando se faz transa��es enormes faz muita diferen�a, pra voc� ter uma id�ia, uma vez um cliente reclamou de um processamento de fechamento que estava demorando cerca de 12 horas, fomos fazer um trace da sess�o do processamento e descobrimos que o desenvolvedor criou dentro de um processamento recursivo um comando select onde fixava os valores no meio do comando, modificamos o comando utilizando BIND e o mesmo processamento caiu para 2,5 horas.

Enfim, como eu disse, eu n�o sei como o seu SGBD se comporta, mas se fosse Oracle com certeza sua afirma��o estaria completamente equivocada.

Sds,
Erasmo

--
 

Erasmo Bispo de Oliveira Junior
Gerente de Pesquisa e Desenvolvimento

Softway - SoftComex Informatica Ltda.

Web: http://www.softcomex.com.br
Email:
[EMAIL PROTECTED]
Fone: +55 (19) 3739-9241
Fax: +55 (19) 3739-9240



Haroldo wrote:
Pessoal,
Eu tenho comandos SQL que utilizam vari�veis BIND, e gostaria de efetuar umas modifica��es, como nos exemplos que seguem, pelo motivo de melhorar a velocidade do comando, pq j� foi provado que � bem mais r�pido n�o utilizar vari�veis bind nas condi��es de WHERE, o problema � que s�o v�rios comandos, e seria trabalhoso no momento modific�-los.
 
Vari�veis:
Number: nCDPESSOA
String: sNMPESSOA
 
1)
"SELECT CDPESSOA, NMPESSOA
INTO :nCDPESSOA, :sNMPESSOA
FROM PESSOA WHERE CDPESSOA = :dfCDPESSOA AND DTINCLUSAO = :dfDTINCLUSAO"
 
2)
"SELECT CDPESSOA, NMPESSOA
INTO :nCDPESSOA, :sNMPESSOA
FROM PESSOA WHERE CDPESSOA = "|| SalNumberToStrX( dfCDPESSOA,0) || "
AND @DATETOCHAR( DTINCLUSAO, 'DD.MM.YYYY' = '" || SalFmtFormatDateTime ( dfDTINCLUSAO, 'DD.MM.YYYY') ||"'"
 
Algu�m poderia me dar uma dica, na qual eu criaria uma rotina para compilar os comando/STRING antes de mandar fazer o SqlPrepare e SqlExecute, tipo deixando o comando assim, sem a necessidade de editar todos os comandos:
 
"SELECT CDPESSOA, NMPESSOA
INTO :nCDPESSOA, :sNMPESSOA
FROM PESSOA WHERE CDPESSOA = 1234 AND DTINCLUSAO = '30.11.2004' "
 
Agrade�o desde j� qquer dica,
 
Haroldo.
 


<<Softway.gif>>

Responder a