Как грамотно связать посты и категории (товар и категории, если угодно)?

Вариант со связующей таблицей аля:
Post
post_id (PK)
title

Category
category_id (PK)
title

Post_Category
post_id (PK)
category_id (PK)

конечно хороший, но при десятках тысяч постов он медленный.
БД: мускул, InnoDB
  • Вопрос задан
  • 995 просмотров
Пригласить эксперта
Ответы на вопрос 2
@lyeskin
Глупости, десятки тысяч постов это не объем даже, используйте MyISAM и правильные индексы. Также покажите запрос, который вы делаете к БД.
Ответ написан
@AlikDex Автор вопроса
Короче методом проб и ошибок наиболее оптимальным получилось это. Время зависит в основном от количества постов в конкретной категории, и почти не зависит от страницы, которую кликает юзер.
SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, e.news_read, e.allow_rate, e.rating, e.likes, e.dislikes, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason 
FROM `dle_post` AS p 
JOIN ( 
    SELECT t2.id FROM `dle_post` AS t2 
        INNER JOIN `dle_category_map` AS cm ON ( cm.news_id = t2.id AND cat_id = '65') 
    WHERE t2.approve=1 AND date < (NOW() + INTERVAL 0 MINUTE) 
    ORDER BY fixed desc, date DESC 
    LIMIT 1536,32 
) AS j USING (id) 
LEFT JOIN dle_post_extras e ON (p.id=e.news_id)

Время выполнения запроса:25,4ms
Самая жирная категория.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы