|
Помогите с запросами с SKIP x FIRST y FROM table
|
|||
---|---|---|---|
#18+
Дано: таблица, около 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2009, 18:37 |
|
Помогите с запросами с SKIP x FIRST y FROM table
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2009, 19:27 |
|
Помогите с запросами с SKIP x FIRST y FROM table
|
|||
---|---|---|---|
#18+
Не знал что на 10 есть SKIP в selecte ... круто ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2009, 08:43 |
|
Помогите с запросами с SKIP x FIRST y FROM table
|
|||
---|---|---|---|
#18+
Кстати у вас именно на SKIP 120443 появляются тормоза или они постепенно? Покажите план запроса? first_rows кстати в запросе есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2009, 08:41 |
|
Помогите с запросами с SKIP x FIRST y FROM table
|
|||
---|---|---|---|
#18+
yackДано: таблица, около 250 000 записей. Необходимо: организовать проход с разбивкой по страницам ... Подскажете, как выкрутиться? Если это достаточно часто, то рассмотрите варианты: - создать индекс по id, чтобы избежать трудоемкой сортировки - увеличить буферный пул (или сделать отдельный только для этой таблицы - свой размер страницы как для таблиы, так и для буфера), чтобы таблица лежала целиком в памяти - по запросу (или во время выдачи клиенту первой страницы) сформировать уже отсортированную временную таблицу с нумерацией строк, проиндексировать и затем выдавать нужными порциями (состояние таблицы будет на момент запроса первой страницы) - заставлять клиента еще на предварительном этапе указывать фильтр (ему и нафик не нужны все 200 тыс. строк), в том числе и по умолчанию ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2009, 12:18 |
|
Помогите с запросами с SKIP x FIRST y FROM table
|
|||
---|---|---|---|
#18+
vasilisсформировать уже отсортированную временную таблицу с нумерацией строк Кстати, как эту задачу решить в информиксе? У меня пока есть только одно решение (если, конечно, не прибегать к циклам), но оно - слишком тяжелое. Например, получаю поле с нумерацией строк, сортировка по name: select t1.name, count(*) from table t1 join table t2 on t2.name >= t1.name group by 1 Если name - не уникально, то запрос немного усложнится, но это не принципиально. Например, в микрософте все просто: там можно в таблицу вставить уже отсортированный набор, потому можно просто создать автоинкрементное поле, в котором и будет храниться порядковый номер строки отсортированного набора данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2009, 16:22 |
|
Помогите с запросами с SKIP x FIRST y FROM table
|
|||
---|---|---|---|
#18+
я думаю идеальный вариант Код: plaintext 1. 2. 3. 4.
Стоимость нулевая, моментальное движение вперед, назад, первая и последняя страницы, стейтлесс. Недостаток -- нельзя перейти к N-й странице. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2009, 16:45 |
|
|
start [/forum/topic.php?fid=44&msg=35761138&tid=1607911]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 465ms |
0 / 0 |