|
Отбор результата запроса порциями
|
|||
---|---|---|---|
#18+
Есть следующая проблемка: -Юзер набил в форме некие параметры и указал, что результат возвращать по 20 записей -Нажимая кнопочки НАЗАД ВПЕРЕД он может загружать новые порции или старые -Как это можно сделать? P.S.:Основная проблема в том, что сервер должен для начала выполнить весь БОЛЬШОЙ ЗАПРОС, а хотелось бы чтобы он его целиком не выполнял (хотеть не вредно ). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2002, 14:57 |
|
Отбор результата запроса порциями
|
|||
---|---|---|---|
#18+
все зависит от того как ты собираешься использовать это в принципе на форме (Forms) они то и не выбираются полностью а так в принципе можешь использовать критерий по ROWID я думаю это заработает... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2002, 13:44 |
|
Отбор результата запроса порциями
|
|||
---|---|---|---|
#18+
Это нужно для работы с базой через WEB. (Ну как на страничках в Inete следующие 25 или предыдущие 25) А как можно для этого использовать ROWID? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2002, 15:18 |
|
Отбор результата запроса порциями
|
|||
---|---|---|---|
#18+
ну я не знаю как точно в HTML ибо с этим сталкивался только блина раза два только... я это использовал в другом прилолжении короче так берешь за основу какой либо уникальный ключ в таблице затем на клиенте (не знаю как у тебя) создаешь массив меток и начинаешь затем берешь самый малый ключ который отвечает твоим услововиям первый запрос делаешь следующим образом.... потом пишео Select * from table_1 where id>in_id and rownum<=20 order by id заетм ты получил 20 записей... занес начальный ID себе в массив и конечный... если ты хочешь получить новую порцию то вместо первого id берешь из массив ID который был при следующей выборке максимальным и отноститьельно него строишь запрос... если предварительно то идешь вниз по массиву и берешь ID подставляешь получаешь короче блина долго рассказывать, но у меня это все короче нормально работало.... я думаю поймешь, если нет то спроси что неясно.. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2002, 10:04 |
|
Отбор результата запроса порциями
|
|||
---|---|---|---|
#18+
Посмотри план своего запроса и подумай, как сервер сможет добыть первые 25 строк, не делая полной выборки. Если такое возможно, то тебе поможет хинт FIRST_ROWS, и, возможно, опция ROWNUM<=25. А вообще, в общем случае без временных таблиц это, кажется, невозможно. Например в варианте, когда нужно сделать fullscan для поиска записей удовлетворяющих твоему критерию. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2002, 20:02 |
|
Отбор результата запроса порциями
|
|||
---|---|---|---|
#18+
Если я правильно понял, то можно проделать такую вещь: -Создать главную таблицу из которой пользователи запросами выдергивают данные по разным критериям. -На этой таблице должно болтаться уникальное поле с данными из sequence и с уникальным индексом по нему. -в запросе пишешь SELECT /*+ index(table idindx) */..., ID FROM table WHERE ... ID>=10 AND ROWNUM<=20 Как я понимаю сканирование таблицы будет идти на основании индекса по ID, причем посли сканирования 20 строк дальнейшее сканирование прекращается, т.е. полного просмотра не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2002, 06:36 |
|
|
start [/forum/topic.php?fid=52&fpage=2849&tid=1993372]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 299ms |
total: | 426ms |
0 / 0 |