oracle8.1.6 select b.bookmark_id, b.url_id, b.local_title, last_live_date, last_checked_date, b.parent_id, complete_url, b.folder_p, lev from (select /*+INDEX(bm_bookmarks bm_bookmarks_local_title_idx)*/ bookmark_id, url_id, local_title, folder_p, level lev, parent_id, owner_id, rownum as ord_num from bm_bookmarks start with bookmark_id = :root_id connect by prior bookmark_id = parent_id) b, bm_urls where exists (select 1 from bm_bookmarks where acs_permission.permission_p(bookmark_id, :user_id, 'read') = 't' start with bookmark_id = b.bookmark_id connect by prior bookmark_id = parent_id) and b.bookmark_id <> :root_id and b.url_id = bm_urls.url_id(+) order by ord_num