[firebase-br] Melhor opção para Select

Carlos H. Cantu listas em warmboot.com.br
Qui Jan 10 11:17:36 -03 2019


Qualquer comando SQL será processado no servidor, e não no cliente.

Opção 1) Somente 3 campos sendo trafegados entre servidor e cliente,
quanto menos trafego, mais rapido obtem-se o retorno total dos dados
no cliente.

Opção 2) Também somente 3 campos sendo trafegados, mas nesse exemplo,
vc colocou um WHERE que provavelmente restringirá o número de
registros retornados, portanto, menos trafego.

Opção 3) Se tivesse colocado o WHERE no select (como no exemplo 2), a
performance seria um pouco pior, já que o Firebird não teria a
capacidade de "enfiar" o WHERE no select que está dentro da procedure.
Não vejo vantagem no uso de procedure nesse exemplo.

Tem outras coisas a serem analisadas, e o exemplo usado nas 3 opções
não é o mesmo... duas não tem where, uma tem... isso torna difícil
fazer uma comparação justa. A decisão de usar procedures e views não
deve ser tomada apenas se baseando em consumo de recursos... tem
muitos outros fatores que podem influenciar mais essa decisão do que o
próprio fator "consumo"... por exemplo, controle de acessos, etc.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

CA> Olá a todos! Depois de umas aulas sobre administração de banco de dados
CA> na faculdade, surgiu a curiosidade em pesquisar mais sobre como melhorar
CA> a performance do Servidor durante as consultas ao Firebird. Minha dúvida
CA> é a seguinte: Qual é a forma mais apropriada e que utilize menos 
CA> recursos de processamento e memória ao realizar Select na aplicação da
CA> máquina cliente? O "Select" é melhor ficar na Aplicação, criar uma 
CA> "View" ou "Stored Procedure"? Das situações que tenho em mente e que 
CA> venho testando, qual destas seria a melhor opção?

CA> Opção 1:
CA> Na Aplicação: " select ID, NOME, CPF from TB_CLIENTES "
CA> (Neste caso, é verdade que o processamento é feito mais na máquina 
CA> cliente, economizando recursos no Servidor?)

CA> Opção 2:
CA> Na Aplicação: " select ID, NOME, CPF from VW_CLIENTES where (NOME 
CA> starting with 'CARLOS') "
CA> No Servidor: VW_CLIENTES  -> "select ID, NOME, DATA_NASC, SEXO, RG, CPF,
CA> FONE1, FONE2 from TB_CLIENTES"
CA> (Neste caso, o fato de que a View esteja selecionando 8 campos e na 
CA> Aplicação somente 3 campos e com filtro, haveria processamento 
CA> desnecessário no Servidor?)

CA> Opção 3:
CA> Na Aplicação: " select ID, NOME, CPF from SP_CLIENTES "
CA> No Servidor: SP_CLIENTES  -> "select ID, NOME, DATA_NASC, SEXO, RG, CPF,
CA> FONE1, FONE2 from TB_CLIENTES"
CA> (Neste caso, a SP utiliza mais, menos ou o mesmo recurso de 
CA> processamento que uma View? É mais adequado ou não?)

CA> Existe mais alguma opção que seria mais apropriado que essas três, 
CA> visando claro menos utilização de recurso e processamento do Servidor?





Mais detalhes sobre a lista de discussão lista