постраничный вывод в mssql

kompo

Guest
постраничный вывод в mssql

Видимо, был в форуме откат и сообщение мое пропало, а такое оно было ладное =) Я такое больше не сочиню...

Но смысл был в следующем.. Как я понимаю, есть два варианта постраничного вывода...

1) первый когда мы делаем select * top 10 from table where id not in (select... )

2) мы выбираем все, а потом делаем data_seek.

проверил оба способа на таблице с 8000 строчками (выбирал десяток записей в конце таблице) получилось, что seek на 0,02 секунды быстрее.

вопрос в том, не тестил ли кто-нибудь эти варианты?
что же лучше выбрать?

1 варинат нравится тем, что все решается стредством бд.
2 вариант оказался почему-то быстрей, а еще его можно красиво сделать и для mysql и mssql.

и еще.. я так понимаю, что при 2 варианте весь запрос возвращается php? а может такое случится, что ему памяти не хватит? или там не все возвращается, а какая-то ссылка?

примерно так...
 

young

Новичок
В mssql LIMIT-а нет

Я использую первый способ, он показался мне проще
Да и меньше данных гоняется между базой и php

Короче юзать его, он правильный
 

Yukko

Новичок
Автор оригинала: young
В mssql LIMIT-а нет
Я использую первый способ, он показался мне проще
Да и меньше данных гоняется между базой и php
Короче юзать его, он правильный
select top 10 *
from (select top 60 *
from sl
order by sl_id)as s
order by sl_id desc

может поздно, но все таки... (недавно сам на вебскрипте нашел)
 

kvazar

Guest
Еще есть такой способ:

с n по m

1) Выбрать все записи во временную # таблицу
2) Удалить первые n
3) Взять TOP m

Только меееедленно
 
Сверху