[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ваше мнение о способах постраничной
m4a1fox
Всем доброго дня. Вопрос больше общего плана. Всем нам известно что есть готовые решение пагинаторов. Кто то использует LIMIT $start $end кто-то как-то еще. Я тут призадумался. Мысль не нова, но мне в голову не приходила. В общем. Не проще ли сделать так. Допустим нужно организовать постраничку. Если мы будем делать вывод с лимитом, по это при загрузке каждой страницы - запрос в БД на вытаскивание информации. Не проще ли.... сразу информацию вытащили, засунули в массив, и после разбить уже этот массив на части. Таким образом мы избавляемся от необходимости постоянного запроса/обращение к БД и экономим (наверно) ресурс. Ваше мнение интересует.



Спустя 2 минуты, 34 секунды (25.04.2012 - 09:52) AlmazDelDiablo написал(а):
А если в базе over 100000000000000 записей? Все сразу загрузить в память и держать? Помоему, такой вариант подходит только для небольших баз данных.

Спустя 1 минута, 15 секунд (25.04.2012 - 09:53) glock18 написал(а):
Мысль точно не нова )) Первого и последнего человека, кто ее озвучил начальству, оно тут же уволило за некомпетентность.

Спустя 55 секунд (25.04.2012 - 09:54) glock18 написал(а):
Цитата (AlmazDelDiablo @ 25.04.2012 - 07:52)
Помоему, такой вариант подходит только для небольших баз данных.


over 10 записей по 2 на каждой страницы smile.gif

Спустя 31 секунда (25.04.2012 - 09:54) m4a1fox написал(а):
glock18
О как..... Ясно. Всем спасибо smile.gif Это было интересно.

Спустя 4 минуты, 27 секунд (25.04.2012 - 09:59) glock18 написал(а):
m4a1fox
вообще я немного категорично заявил про некомпетентность. Вас я не имел ввиду, конечно, просто выразил неудачность идеи. А дело в том, подобная логика может оправдать себя только в каких специфических ситуациях, и есть несколько важных факторов, которые нужно учесть, чтобы в этих самых ситуациях получить хоть какой-то плюс по скорости по сравнению с традиционным подходом.

Спустя 6 минут, 41 секунда (25.04.2012 - 10:05) m4a1fox написал(а):
glock18
Цитата
Вас я не имел ввиду, конечно, просто выразил неудачность идеи

Да я понимаю... просто именно этот момент и интересен был. Тем не спасибо Вам. Тогда попутно у меня еще вопрос. Хорошо! С БД как бы понятно. А как тогда дела обстоят с папкой... или со строками в txt файле...

Спустя 8 минут, 24 секунды (25.04.2012 - 10:14) T1grOK написал(а):
Выгружаются в массив строки и считается их количество. На файлах данные обычно разбивают на несколько файлов, в одном из которых находится связывающая информация - например имя файла, количество строк и т.д. И вообще применяется смекалка используемая в реляционных базах данных. То есть на файлах нужно будет изобрести велосипед, который уже есть в реляционных БД. Но это требуется в особо "тяжелых" случаях.

Спустя 46 минут, 2 секунды (25.04.2012 - 11:00) bodja написал(а):
m4a1fox
Цитата
А как тогда дела обстоят с папкой... или со строками в txt файле...

У меня обстоят вот так. ;)


Здесь разгребаем ,что получил аякс
function completeComment(data) {
page=1
allcomment=data;
var max=5;
var h1='';
var h2='<span class="paginator_">Страница : </span>';
allcomment=data.match(/(.*)\r\n/ig);
for (var i=0;i<max;i++) {
if (allcomment[i]!=undefined) {
h1+='<div class="comment">'+allcomment[i]+'</div>';
}
}

for (i=0;i<10;i++) {
if (allcomment[i*max]!=undefined) {
h2+='<span class="paginator" onClick="Page('+i+');">'+(i+1)+'</span>';
}
}

el('comment').innerHTML=h1;
el('paginator').innerHTML=h2;
el('comment').innerHTML=bbReplace('comment');
el('addpost').innerHTML=form_comment();
el('paginator').getElementsByTagName('span')[1].style.background='#8888ff';
}


Здесь переключение страниц пагинатора ,без подзагрузки,тоесть у нас уже все посты в массиве allcomment.

function Page(cnt) {
el('paginator').getElementsByTagName('span')[page].style.background='#000000';
page=cnt+1;
el('paginator').getElementsByTagName('span')[page].style.background='#8888ff';
var max=5;
var h='';
for (var i=cnt*max;i<cnt*max+max;i++) {
if (allcomment[i]!=undefined) {
h+='<span class="comment">'+allcomment[i]+'</span>';
}
}

el('comment').innerHTML=h;
el('comment').innerHTML=bbReplace('comment');
}


Но есть одно ,но ...
Соглашусь с предыдущими мнениями ,что не стоит сливать если много постов.
Такое годится для коментов к статье или отзывам.
Я добавляю только до 100 постов ,а потом старые убиваю.

Спустя 1 час, 3 минуты, 46 секунд (25.04.2012 - 12:04) johniek_comp написал(а):
Я на всех своих сайтах, в том числе и на работе делаю как вконтакте, т.е. опустились вниз подгрузились данные, при этом я не достаю сразу 100500 записей, я сначала узнаю их кол-во и каждый раз когда опустились идет ajax которые достает следующие записи...

Спустя 4 минуты, 21 секунда (25.04.2012 - 12:08) glock18 написал(а):
Цитата (johniek_comp @ 25.04.2012 - 10:04)
Я на всех своих сайтах, в том числе и на работе делаю как вконтакте, т.е. опустились вниз подгрузились данные, при этом я не достаю сразу 100500 записей, я сначала узнаю их кол-во и каждый раз когда опустились идет ajax которые достает следующие записи...


у тебя Дуров в корешах? давал исходные коды посмотреть? smile.gif

Спустя 11 минут, 17 секунд (25.04.2012 - 12:19) twin написал(а):
Обычно проблемы лишних запросов решает файловый кэш. Если конечно листается не результат поиска или какие то другие динамически меняющиеся данные.

Спустя 11 минут, 5 секунд (25.04.2012 - 12:30) m4a1fox написал(а):
johniek_comp
Цитата
Я на всех своих сайтах, в том числе и на работе делаю как вконтакте, т.е. опустились вниз подгрузились данные, при этом я не достаю сразу 100500 записей, я сначала узнаю их кол-во и каждый раз когда опустились идет ajax которые достает следующие записи...

Ну так поделись кодом с народом то... смысл воздух сотрясать?

Спустя 1 час, 39 минут, 54 секунды (25.04.2012 - 14:10) johniek_comp написал(а):
какой именно код выложить?

Спустя (25.04.2012 - 14:10) bodja написал(а):
johniek_comp
Цитата
я сначала узнаю их кол-во и каждый раз когда опустились идет ajax которые достает следующие записи...

И париш мозги серваку и БД кучей запросов. wink.gif

Спустя 1 час, 11 минут, 9 секунд (25.04.2012 - 15:21) inpost написал(а):
m4a1fox
Читал статью по поводу оптимизации поиска и постраничек... так вот, дальше 10-ой страницы очень редко когда кто открывает. Итого, ты можешь выбирать одним запросом 100 записей, если выборка идёт из нескольких таблиц (!!!), то кешировать на файлах, и на выходе отдавать из кеша или из массива твоего.

Спустя 45 минут, 4 секунды (25.04.2012 - 16:07) johniek_comp написал(а):
По сути если с кэшем на файлах, то выходит 1 запрос в БД, надо попробовать... wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.