2009-09-30 1 views
1

У меня есть запрос, который возвращает 30 строк. Я пишу код, который будет разбивать эти 30 строк на 5 записей на страницу с помощью вызова AJAX.Выбор строк между x и y из базы данных

  1. Есть ли причина возвращать только эти 5 записей на уровне презентации? Будут ли какие-либо выгоды с точки зрения скорости, или все равно просто получить все строки под капотом?

  2. Если да, то как мне это сделать в Sybase? Я знаю, что Oracle имеет Rownum, а MS Sql имеет нечто похожее, но я не могу найти подобную функцию в Sybase.

ответ

3

Если ваша длина записи невелика, разница между 5 и 30 строками должна быть совершенно незаметной для пользователя. На самом деле существует значительный потенциал, что множественные вызовы БД вредят производительности больше, чем помогают. Просто верните все 30 строк либо на ваш средний уровень, либо на презентацию, что имеет смысл.

0

Я никогда не работал с Sybase, но вот ссылка, которая объясняет, как сделать что-то подобное:

http://www.dbforums.com/sybase/1616373-sybases-rownum-function.html

Поскольку решение включает в себя временную таблицу, вы также можете использовать ее для разбивки на страницы. В исходном запросе поместите 30 строк во временную таблицу и добавьте столбец для номера страницы (первые пять строк будут на странице 1, на следующих пяти страницах 2 и т. Д.). При последующих запросах страницы вы запрашиваете таблицу temp по номеру страницы.

Не знаете, как вы собираетесь очищать временный стол. Возможно, когда сеанс пользователя заканчивается?

Для 30 записей, вероятно, даже не стоит беспокоиться о разбиении на страницы.

0

Я думаю, что в Sybase вы можете использовать

select top 5 * from table 
where order-by-field > (last record of previous calls order-by-field) 
order by order-by-field 

просто убедитесь, что вы используете один и тот же порядок, каждый раз.

Что касается пользы, я предполагаю, что это зависит от того, сколько строк мы говорим и насколько большой стол и т.д.

0

Я полностью согласен с jmgant, однако, если вы хотите сделать это в любом случае, процесс идет что-то как это:

  1. Выбрать 10 лучших элементов и магазин в X
  2. Выберите топ 5 элементов и магазин в Y
  3. XY

Весь этот процесс может произойти в 1 инструкции SQL.