Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

renan63

performance na hora de programar

Recommended Posts

Olá,

gostaria de tirar uma dúvida com relação a performance de uma aplicação durante uma tela com paginação.

 

Hoje, em uma programação estruturada, eu faria uma query SQL mais ou menos assim:

 

"select id, nome, email, login, senha, telefone from usuarios order by nome"

 

daí eu faria um loop no record set da query e exibiria na tela de 10 em 10 registros...

 

mas agora fiquei pensando se não melhora a performance se eu fizer uma query recuperando apenas o ID do registro, assim:

 

"select id from usuarios order by nome"

 

exibir na tela de 10 em 10 registros e nesse loop com apenas 10 registros, aí sim fazer outra query recuperando os dados apenas de 10 registros, então, dessa forma o sistema rodaria a query principal uma vez, trazendo apenas o ID e depois teriam mais 10 querys para recuperar os dados completos de 10 registros na base.

 

Deu para entender?

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que você misturou as coisas

 

Busca por registro especifico tendo a chave retorna um registro, algo como

 

select id,nome,telefone from clientes where id = 1234

Busca por váriios registros, sem chave

 

 

select id,nome,telefone from clientes where nome like '%renan%'

Isto poderia ser feito em programação estruturada, não estruturada, sem relação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A paginação pode ser feita na programação, já que os dados são carregados em "cache", ou seja, a consulta é realizada somente uma vez no banco e os dados armazenados "in loco". o que acontece, muitas vezes, é o time-out da aplicação ser pequeno e a paginação se perder.

 

O exemplos abaixo funciona em SQL2000

 

SELECT * FROM(SELECT TOP(20) FROM(SELECT TOP(60) * FROM tabela ORDER BY coluna ASC) AS r1 ORDER BY coluna DESC) AS r2 ORDER BY coluna ASC 
Para SQL2005 e superior, temos a função ROW_NUMBER()
WITH resultado AS(SELECT *, ROW_NUMBER() OVER (ORDER BY coluna) AS linha FROM tabela) SELECT * FROM resultado WHERE linha BETWEEN x AND y

Claro, isso depende muito de como vai ser programado, linguagem utilizada e outros fatores.
Boa sorte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.