chira,
Я бы не был таким уверенным...
В варианте от trent'a - вытаскиваются
ВСЕ записи из таблицы в сабселекте и потом из них выбирается N нужных.
В моем варианте - выборка всех записей из таблицы не производится (да будет вам известно, что курсор не выбирает все записи зараз). Да и выборка идет (при правильном дизайне БД) по индексу, а не с помощью full-scan как это делается при селекте всех записей.
если нам к примеру нужно плучить записи с 99120-99129, то сами подумайте вытаскивать 99120 записей в PHP - это не извращение?
А если эти записи находятся в таблице с общим кол-вом записей в 1 миллион, то выбирать весь миллион для того, чтобы выбрать потом 10 записей из полученного резалтсета - это не извращение? Я понимаю, что селект из селекта выглядит изящнее с точки зрения программиста (никаких лишних движений при минимуме написанного кода) - но с моей точки зрения (Oracle DBA) - это неправильный подход к созданию оптимального кода.
P.S. Давайте определимся господа, о каком кол-ве данных идет речь? Если о 100 записях в таблице - то чего мы пупы рвем? "Ставить MySQL и млеть от Щастья!"
Если же мы говорим о большОм кол-ве данных - то давайте оптимизировать запросы, исходя из оракловских реалий.
P.P.S. Crazy, про EXPLAIN PLAN я помню.
Ну нет у меня под рукой телефонного справочника - не пишу я их, придется в свободное время родить структуру и, главное - данные для теста.