powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Помогите с запросами с SKIP x FIRST y FROM table
7 сообщений из 7, страница 1 из 1
Помогите с запросами с SKIP x FIRST y FROM table
    #35758033
yack
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано:
таблица, около 250 000 записей.
Необходимо:
организовать проход с разбивкой по страницам

Решал:
При помощи запроса SKIP x FIRST y FROM table ORDER BY id.


когда SKIP имеет небольшме значения - работает нормально.
Когда запрос приобретает вид SKIP 120443 FIRST 25 FROM table ORDER BY id - выполнение запроса затягивается на полминуты.

Подскажете, как выкрутиться?

Informix 11.5 tc3
...
Рейтинг: 0 / 0
Помогите с запросами с SKIP x FIRST y FROM table
    #35758096
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Помогите с запросами с SKIP x FIRST y FROM table
    #35758488
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знал что на 10 есть SKIP в selecte ... круто
...
Рейтинг: 0 / 0
Помогите с запросами с SKIP x FIRST y FROM table
    #35760553
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати у вас именно на SKIP 120443 появляются тормоза или они постепенно?
Покажите план запроса? first_rows кстати в запросе есть?
...
Рейтинг: 0 / 0
Помогите с запросами с SKIP x FIRST y FROM table
    #35761138
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yackДано:
таблица, около 250 000 записей.
Необходимо:
организовать проход с разбивкой по страницам
...
Подскажете, как выкрутиться?
Если это достаточно часто, то рассмотрите варианты:
- создать индекс по id, чтобы избежать трудоемкой сортировки
- увеличить буферный пул (или сделать отдельный только для этой таблицы - свой размер страницы как для таблиы, так и для буфера), чтобы таблица лежала целиком в памяти
- по запросу (или во время выдачи клиенту первой страницы) сформировать уже отсортированную временную таблицу с нумерацией строк, проиндексировать и затем выдавать нужными порциями (состояние таблицы будет на момент запроса первой страницы)
- заставлять клиента еще на предварительном этапе указывать фильтр (ему и нафик не нужны все 200 тыс. строк), в том числе и по умолчанию
...
Рейтинг: 0 / 0
Помогите с запросами с SKIP x FIRST y FROM table
    #35761885
Valentyn P.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilisсформировать уже отсортированную временную таблицу с нумерацией строк
Кстати, как эту задачу решить в информиксе?
У меня пока есть только одно решение (если, конечно, не прибегать к циклам), но оно - слишком тяжелое.

Например, получаю поле с нумерацией строк, сортировка по name:

select t1.name, count(*)
from table t1
join table t2 on t2.name >= t1.name
group by 1

Если name - не уникально, то запрос немного усложнится, но это не принципиально.



Например, в микрософте все просто: там можно в таблицу вставить уже отсортированный набор, потому можно просто создать автоинкрементное поле, в котором и будет храниться порядковый номер строки отсортированного набора данных.
...
Рейтинг: 0 / 0
Помогите с запросами с SKIP x FIRST y FROM table
    #35761949
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я думаю идеальный вариант

Код: plaintext
1.
2.
3.
4.
select /*+first_rows*/ first  10  * 
from 
where f > :prev_page_last_f_value 
order by f

Стоимость нулевая, моментальное движение вперед, назад, первая и последняя страницы, стейтлесс. Недостаток -- нельзя перейти к N-й странице.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Помогите с запросами с SKIP x FIRST y FROM table
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]