Нужен алгоритм: статья на несколько разделов

(Ответов: 25, Просмотров: 1140)
Страница 2 из 3 Первая 123 Последняя
  1. Опытный Аватар для AntoXa
    • Регистрация: 05.04.2012
    • Сообщений: 393
    • Репутация: 108
    • Webmoney BL: ?
    Как вариант можно в таблице сделать поле category и в ней перечислять категории через ; а потом их разбивать explode'ом, но это велосипед, вариант с доп. таблицей лучше...
    • 0
  2. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от Bukmeker Посмотреть сообщение
    т.е. сначала я возьму из БД список категорий потом из $myrow['categ'] создам массив в цикле буду вызывать функцию, которая сделает запрос в БД и вернет мне категорию и так пока строка не кончится? в Вашем случае ограничение до 8 категорий включительно. не, по моему это будет очень нагружать сайт.
    да, в цикле - это как бы "фоном" делает функция. так что сильно не нагрузит.
    зато отдельная таблица не нужна. категорий хоть 20, это не важно.
    ну у меня же не нагружает) это кстати не я сказал, это форумчане отметили быструю работу моего сайта... а у меня не 1 такая функция, и не в одном месте используется..

    кстати, чтобы не ограничивать себя циклом for, в котором стоит ограничение 7, можно использовать например while,
    и в условие ставить " пока есть категории"

    ---------- Сообщение добавлено 17:28 ---------- Предыдущее 17:19 ----------

    AntoXa, и сколько запросов будет? в моем варианте будет столько, сколько стоит в поле category, а в случае отдельной таблицы, тебе всю таблицу каждый раз пробегать придется, пока соответствие найдешь, а если у тебя 1000 статей или больше? сколько времени будет уходить на чтение таблицы соответствий? и большей частью впустую, так как в результате будет находиться только 1 соответствие.
    Последний раз редактировалось cOAPerator; 09.01.2013 в 16:31.
    • 0
  3. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Эм, как бы... вместо одного дополнительного запроса к бд лучше делать их столько, во сколько категорий входит статья? Чего-то я не понимаю значит...
    Напоминаю всем. Для ускорения работы с бд нужно использовать mysqli , который в новых версиях рнр будет стандартом при работе с mysql базами, а старый mysql_query будет запрещен.
    • 0
  4. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от brainix Посмотреть сообщение
    вместо одного дополнительного запроса к бд лучше делать их столько, во сколько категорий входит статья
    так я это и предложил, вместо пробежки к доп таблице, с перебором всех ее значений в поиске нужного соответствия.
    • 0
  5. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Не пойму, почему доп таблица хуже при 1000 статей? Ведь когда мы смотрим категорию 1 мы один запрос делаем с айди этой категории и у нас есть результат.
    Когда мы смотрим статью то тоже делаем один запрос с айди статьи и результат. При каком варианте то их много нужно делать, запросов к доп таблице?
    • 0
  6. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от brainix Посмотреть сообщение
    При каком варианте то их много нужно делать, запросов к доп таблице?
    у него в поле category у каждой статьи, стоит несколько значений,
    вот сколько там у него значений присвоено каждой статье, столько и будет запросов к доп таблице,
    соответственно столько раз и будешь пробегать по всей таблице соответствий, пока его найдешь.
    • 0
  7. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Приехали... ТС как раз и просил альтернативу. При альтернативе делается один запрос с айди статьи, поле category уже нет, когда есть доп таблица.
    Посмотри второе сообщение в этой теме и что я написал выше пост.
    Запрос с айди статьи выдаст все айдишники категорий сразу. А например если это для ЧПУ то можно сразу и путь категории писать в таблице связке, чтобы не делать доп запросы в таблицу с категориями.
    • 0
  8. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от brainix Посмотреть сообщение
    ТС как раз и просил альтернативу.
    пардон, чето пропустил) сори. но в таком случае вообще получается эта таблица ссответствий, будет как на дрожжах расти.
    1000 статей * 3 категории к каждой статье = 3000 записей
    в итоге: при выводе на странице категорий которые присвоены статье, каждый раз пробежка по твоей огромной таблице соответствий, которая в 3 раза превышет кольчество самих статей.
    и так для каждой статьи.

    +писать скрипт который будет менять категории и их количество, если например для статьи какой то надо поменять.
    а у меня смена категорий 1 запросом.

    в моем варианте количество целевых запросов к бд и время генерации в итоге меньше.
    Последний раз редактировалось cOAPerator; 09.01.2013 в 17:03.
    • 0
  9. Студент Аватар для Bukmeker
    • Регистрация: 27.10.2012
    • Сообщений: 74
    • Репутация: 6
    • Webmoney BL: ?
    а если использовать LIMIT и пагинацию. Допустим на странице 15 статей, то и нагрузка станет меньше.
    хотя по таблице соответствий пробежаться придется все равно.
    блин, сделал с таблицей соответствий, теперь не знаю, что делать, переписывать или так оставить...
    да, запарка со скриптом меняющим категории тоже была, просто удаляю все записи с этой статьей и создаю заново, только уже для вновь выбранных категорий (или уже существующих).
    • 0
  10. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от Bukmeker Посмотреть сообщение
    да, запарка со скриптом меняющим категории тоже была, просто удаляю все записи с этой статьей и создаю заново, только уже для вновь выбранных категорий (или уже существующих).
    это наверное дело вкуса уже) я когда изучал вопрос построения категорий, сразу отказался от варианта с доп. таблицей, т.к. он мне кажется слишком избыточным..
    в итоге мой вариант вышел более простым, менее затратным в плане ресурсов, и более легким в плане обслуживания(в данном случае - изменение категорий) - я сторонник минимализма)

    но повторюсь, имхо, это дело вкуса..

    Цитата Сообщение от Bukmeker Посмотреть сообщение
    а если использовать LIMIT и пагинацию.
    ну это само собой, но все равно, избыточность будет в пробежке по этой отдельной таблице..
    сами посчитайте, что быстрее: пройтись по таблице с 3 десятками категорий 45 раз (15 постов с 3 категориями на каждую)
    или 15 раз (15 постов на странице) по 3 тысячам записей?

    Ну решать Вам)
    Последний раз редактировалось cOAPerator; 09.01.2013 в 17:33.
    • 0
Страница 2 из 3 Первая 123 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Алгоритм грабера
Web программирование 12 08.05.2012 17:22
Дубли разделов, удаление из индекса
Вопросы от новичков 2 21.01.2012 17:23
Рекомендации по оптимизации разделов сайта
Дайджест блогосферы 0 10.04.2011 19:27
Как работает алгоритм АГС
Дайджест блогосферы 0 24.04.2010 14:08

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры