Używanie rownum w instrukcji SQL oracle w połączeniu z klauzulą ​​porządkową

Które z poniższych dwóch instrukcji SQL zwróci żądany zestaw wyników (tj. dziesięć wierszy o statusie = 0 i najwyższych czasach rozpoczęcia)?

Czy obie instrukcje zawsze zwracają ten sam zestaw wyników (Czas rozpoczęcia jest wyjątkowy)?

<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>

tło

Mój DBAdmin powiedział mi, że pierwsze oświadczenie będziepierwszy ogranicz tabelę do 10 wierszy i uporządkuj losowe wiersze według StartTime, co zdecydowanie nie jest tym, czego chcę. Z tego, czego się nauczyłemta odpowiedź, klauzula order by drugiej instrukcji jest zbędna i może zostać usunięta przez optymalizator, co również nie jest tym, czego chcę.

Zapytałem apodobne pytanie łączenielimit klauzula w zapytaniu do bazy danych SQLite i jestem zainteresowany zrozumieniem wszelkich różnic w stosunku do powyższych stwierdzeń (przy użyciulimit Vsrownum) używane z db oracle.

questionAnswers(1)

yourAnswerToTheQuestion