Usando rownum no Oracle Instrução SQL em combinação com a cláusula order by

Qual das duas instruções SQL a seguir retornará o conjunto de resultados desejado? (isto é, as dez linhas com Status = 0 e os mais altos StartTimes)?

Ambas as declarações sempre retornarão o mesmo conjunto de resultados (StartTime é único)?

<code>SELECT * 
FROM MyTable 
WHERE Status=0 
AND ROWNUM <= 10 
ORDER BY StartTime DESC

SELECT * 
FROM (
    SELECT * 
    FROM MyTable 
    WHERE Status=0 
    ORDER BY StartTime DESC
) 
WHERE ROWNUM <= 10
</code>

fundo

Meu DBAdmin me disse que a primeira declaração seráprimeiro limite a tabela a 10 linhas e depois ordene aquelas linhas aleatórias por StartTime, o que definitivamente não é o que eu quero. Pelo que aprendi emessa resposta, a cláusula order by da segunda instrução é redundante e pode ser removida por um otimizador, que também não é o que eu quero.

Eu pedi umpergunta semelhante concerindo olimit cláusula em uma consulta a um banco de dados SQLite e estou interessado em entender quaisquer diferenças para as declarações acima (usandolimit Vsrownum) usado com um oracle db.

questionAnswers(1)

yourAnswerToTheQuestion