Quais ganhos de desempenho posso esperar da paginação do banco de dados?
-
26-09-2019 - |
Pergunta
Diga que tenho uma tabela x com 100 registros e que executando um select * from X
leva 100 segundos.
Quanto tempo devo esperar a consulta select top 10 * from X
pegar?
Eu esperaria que o relacionamento seja mais ou menos linear, então 10 segundos. Isso está correto ou o relacionamento não linear de alguma forma?
Solução
Seu custo de desempenho está em duas áreas diferentes:
- Quanto tempo leva para realizar a consulta
- Quanto tempo leva para devolver os resultados
Muitas vezes, uma consulta será rápida, mas os resultados retornados serão lentos, pois é ligada à E/S. Se for esse o caso, você verá uma aceleração aproximadamente linear retornando menos resultados.
No entanto, se a consulta for complicada, as coisas serão diferentes. Se não for apenas select * from X
, mas select * from X where [complicated-expression]
, os resultados podem variar amplamente entre as implementações do banco de dados. Nesse caso, seu desempenho pode ser dominado pela complexidade da consulta; nesse caso, você não verá tanto benefício, apenas retornando menos resultados.