Pessoal
sou desenvolvedor java…
sei q não é um forum de oracle
mas como a comunidade sempre me ajudo, creio que vai me ajudar…
tenho um sistema que tem uma tabela com 400 mil registro, preciso fazer um SELECT que traga os 1000 maiores… sendo os 1000 maiores PK.
alguem pode me ajudar?
[quote=theBalrogg]
Bruno, ao que me consta, a cláusula ORDER BY só é resolvida após todas as outras cláusulas, principalmente a cláusula WHERE. O que quer dizer que primeiro ele vai pegar as N primeiras linhas para depois ordená-las. Dada a necessidade do nosso amigo, o SELECT que você passou pode ser otimizado, mas não vai dar a ele o resultado que ele precisa.[/quote]
Isso depende na verdade. Pelo menos no Oracle, se a coluna que ele passar no order by for indexada, vai dar certo. Testei numa coluna sem index também, e realmente neste caso não dá certo.
select *
from tabela
where ROWNUM <= :N
order by critério
[/quote]
Bruno, ao que me consta, a cláusula ORDER BY só é resolvida após todas as outras cláusulas, principalmente a cláusula WHERE. O que quer dizer que primeiro ele vai pegar as N primeiras linhas para depois ordená-las. Dada a necessidade do nosso amigo, o SELECT que você passou pode ser otimizado, mas não vai dar a ele o resultado que ele precisa.