Re: [delphi-br] SQL+Performance [WHERE ((CAMPO = :PARAMETRO) OR (:PARAMETRO IS NULL))]

2010-06-18 Por tôpico Murilo Cunha
Jhosef,

Nao ha algo errado em seu SQL??
Nao seria:

SELECT * FROM TABELA
WHERE ((CAMPO = :PARAMETRO) OR (CAMPO IS NULL))

Vc comparar o CAMPO como nulo NAO o PARAMETRO

Respondendo a pergunta:
Acho perfeitamente valido passar SQL para querys com parametros em tempo 
de execucao.
O problema de performance eu vejo quando vc nao usa WHERE em suas 
consultas (ou usa pouco) OU quando nao se tem INDICES para tabelas muito 
grandes, por exemplo, tabela de CEPs, tabela de precos, tabela de LOGs 
do sistema, tabela de movimentacao de estoque...

Se vc usa banco de dados robustos (PostgreSQL, Oracle, SQLServer, MySQL 
ou Firebird) nao se incomode com performance, eles dao conta do recado 
em tabelas pequenas a medias.


Obrigado
MuriloCunha


On 17/06/2010 18:25, Jhosef Marks wrote:
 Boa tarde a todos ou boa noite...

 Galera só para saber como vocês trabalham e se vocês recomendam...

 Executar querys do tipo

 SELECT * FROM TABELA
 *WHERE ((CAMPO = :PARAMETRO) OR (:PARAMETRO IS NULL))*
 *
 *
 *é POG e prejudica na performance, ou é POG mas não tem problema de
 performance, ou em último caso isso é altamente recomendado?
 *

 Att,

 Jhosef Marks de Carvalho
 Blog: http://www.jhosefmarks.com.br
 Jesus está voltando

 E se o meu povo, que se chama pelo meu nome, se humilhar, e orar, e buscar
 a minha face e se converter dos seus maus caminhos, então eu ouvirei dos
 céus, e perdoarei os seus pecados, e sararei a sua terra. (2 Cr 7:14)


 [As partes desta mensagem que não continham texto foram removidas]



 





Re: [delphi-br] SQL+Performance [WHERE ((CAMPO = :PARAMETRO) OR (:PARAMETRO IS NULL))]

2010-06-18 Por tôpico Josimar Zimermann
Olá Jhosep!

Imagino que você irá utilizar o método *ParamByName* para informar o 
valor de *:PARAMETRO*, certo?

Antes de você passar esse valor você sabe se ele será *NULL*. Se o valor 
de *:PARAMETRO* for *NULL*, será o equivalente a:

*SELECT
*
FROM
TABELA;

*Seria similar à:

*SELECT
*
FROM
TABELA
WHERE
CAMPO = :PARAMETRO OR
1 = 1*, ou seja, todos os registros vão satisfazer a condição.
*
*Se a tabela for muito grande, imagina a demora que vai ser. Reveja a 
sua lógica, me parece que não algo errado!

Valeu!

Em 17/6/2010 18:25, Jhosef Marks escreveu:

 Boa tarde a todos ou boa noite...

 Galera só para saber como vocês trabalham e se vocês recomendam...

 Executar querys do tipo

 SELECT * FROM TABELA
 *WHERE ((CAMPO = :PARAMETRO) OR (:PARAMETRO IS NULL))*
 *
 *
 *é POG e prejudica na performance, ou é POG mas não tem problema de
 performance, ou em último caso isso é altamente recomendado?
 *

 Att,

 Jhosef Marks de Carvalho
 Blog: http://www.jhosefmarks.com.br
 Jesus está voltando

 E se o meu povo, que se chama pelo meu nome, se humilhar, e orar, e 
 buscar
 a minha face e se converter dos seus maus caminhos, então eu ouvirei dos
 céus, e perdoarei os seus pecados, e sararei a sua terra. (2 Cr 7:14)



[As partes desta mensagem que não continham texto foram removidas]