Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как лучше в плане оптимизации ?
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Как лучше в плане оптимизации ?

Страниц (1): [1]
 

1. Danxil - 03 Февраля, 2014 - 00:48:07 - перейти к сообщению
В общем есть книжный каталог, книги хранятся в бд, у каждой книги есть название, ее авторы, ее рубрики, и в перспективе еще много чего.
Есть возможность редактировать книгу - менять/добавлять ее авторов (т.е. при редактировании нужно получить список всех авторов).
Есть авторы, автор может не быть привязаным ни к одной книге.
Редактирование на аяксе. С рубриками, так же как и с авторами.

Вижу несколько способов это реализовать:

1. При первом запросе получить из бд все книги, всех авторов со связями между ними, создать из этих данных каталог книг с авторами и форму редактирования со списком всех авторов, вывести каталог книг и форму редактирования, но по умолчанию форму скрыть, при редактировании показывать форму и отправлять аякс-запрос.

Минусы:
- заранее создается форма редактирования которая может и не понадобится
- из базы извлекаются все авторы, в том числе и те, у которых нет книг те. если не будет редактирования - они не нужны

Из плюсов: всего один запрос к бд, не считая запроса на редактирование.

2. При первом запросе получить из базы все книги и и только тех авторов которые с ними связаны. При редактировании аяксом получить из базы список всех авторов, и создать форму с этим списком

Плюсы: изначально не получаю лишних данных и не создаю лишних форм
Минусы: несколько запросов на сервер и к бд.

Какой из этих способов лучше или как вообще лучше можно сделать ?
2. DelphinPRO - 03 Февраля, 2014 - 02:23:11 - перейти к сообщению
Зачем все книги-то получать? все равно редактирование по одной.

Вывести список книг (как положено, с пагинацией, по 10-20 штук на страницу).
при клике на книгу подтягивать аяксом данные по ней и показывать форму.
Список авторов можно сразу дернуть, и\или сделать умный поиск с автокомплитом.
3. Danxil - 03 Февраля, 2014 - 11:43:35 - перейти к сообщению
Прикол в том, что данные по каждой книге нужн опоказыват ьизначально, типа как тут - http://danxil[dot]pp[dot]ua/
Т.е. выходит при редактировании аяксом получать список всех авторов, списоку рубрик и создавать форму ?
4. DelphinPRO - 03 Февраля, 2014 - 13:48:57 - перейти к сообщению
ну во-первых, не по всем же книгам сразу? а если их 1000? все равно разбиение на страницы по 10-20 штук.
во-вторых, если то, что выводится в таблице, это все данные по книге, и других нет, можно и скрытые формы делать на каждую книгу.
А если в табличке отображается только часть данных, для информативности, чтобы идентифицировать книгу в списке, то как и сказал выше - при клике подтягивать полные данные.
Вообще тут нечего оптимизировать-то. Не бог-весть какая нагрузка...

По поводу авторов и рубрик - запихните их прямо в страницу в виде javascript-массива.
Если авторов очень много, - сделайте дополнительный интерфейс по выбору автора. Например во всплывающем окне список букв алфавита, при клике на букву, показывайте авторов на эту букву. В базе, соответственно индекс вешаем на поле с именами авторов.
Если не ошибаюсь (где-то видел сегодня) индекс можно создать только по первому символу.
5. Danxil - 03 Февраля, 2014 - 14:28:55 - перейти к сообщению
С пагинацией понятно. По поводу авторов и рубрик - вы имеете введу при каждом редактировании проверять - были ли они уже получены, если нет отправлять запрос на получение, если да - нет ?

Пока это все данные по книгам, но в перспективе их может быть больше, поэтому хочу сразу понять как сделать в идеале. Это все чисто в целях обучения

 

Powered by ExBB FM 1.0 RC1