Boa tarde galera,
alguém sabe uma forma de pesquisar os ultimos dez registros de uma tabela de forma a não utilizar muitos selects, pois preciso desempenho.
E não sei a quantia de registros na tabela.
Obrigado e abraço.
usa a cláusula ORDER juntamente com a clausula LIMIT
Depende da base de dados e da coluna que você quer usar para ordenação.
Se for Oracle, utilize a pseudo coluna rownum:
SELECT
rownum as num_linha,
col1, --coluna da ordenacao
col2,
...
FROM
tabela
WHERE
num_linha < 10 --nao sei se a contagem começa de 0 ou 1. Se for de 1, utilizar <=10
ORDER BY
col1 DESC --utilize o DESC, assim voce nao pega os 10 primeiros, mas sim os 10 ultimos.
Se for indispensavel que o resultado venha corretamente ordenado, existe um “workaround” (termo politicamente correto para gambiarra 8) ):
SELECT
*
FROM
(<o select anterior>) AS outro_select
ORDER BY
outro_select.col1 ASC
O MS SQL Server também tem algo parecido com o rownum, a função rank(), mas nao lembro exatamente como funciona. Imagino que outras bases tenham algo parecido, basta dar um search no Google (ex. MySQL rownum)
Infelizmente, é o tipo de coisa sem solução padrão, depende do BD…
Espero ter ajudado

Valeu!!
Vou testar aqui.