Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2009-03-27 09:25:07

FDVFlex
Участник
Откуда Солнечный Русский Крым
Зарегистрирован: 2009-03-27
Сообщений: 2
Рейтинг :   

несколько категорий у новости

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

Проблема начинается при большом количестве новостей, когда по определённой категории требуется показать новости используется mysql запрос с регулярным выражением

`catid` regexp [[:<:]](идешник_категории)[[:>:]]

. Такой запрос выполняется довольно долго. Причём проблему не решит даже простановка ключа для поля `catid`, так как в подобных запросах ключи не используются.

Данная проблема существует, также и в DLE и в 2z. В ДЛЕ попытались её решить довольно просто: не хочешь, чтобы сайт тормозил - не ставь для новости несколько категорий - тогда будет вместо запроса:

`catid` regexp [[:<:]](идешник_категории)[[:>:]]

использоваться запрос вида:

`catid`='идешник_категории'

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

Мне кажется, было бы правильнее хранить соответствия `ид_новости` => `ид_категории` в отдельной табличке с ключом по `ид_категории`. Благодаря этому при показе новостей из выбранной категории будет использоваться ключ и такой запрос будет выполняться значительно быстрее.

Изменено FDVFlex (2009-03-27 09:34:26)

Не в сети

#2 2009-03-27 09:45:31

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: несколько категорий у новости

Всё верно.
В SVN версии уже создана таблица PREFIX_news_map:

CREATE TABLE `PREFIX_news_map` (
  `newsID` int(11) default NULL,
  `categoryID` int(11) default NULL,
  KEY `newsID` (`newsID`),
  KEY `categoryID` (`categoryID`)
) ENGINE=MyISAM;

Она как раз и  будет использоваться для маппинга.
В коде её поддержка реализована пока лишь частично.

Не в сети

#3 2009-03-27 09:49:44

FDVFlex
Участник
Откуда Солнечный Русский Крым
Зарегистрирован: 2009-03-27
Сообщений: 2
Рейтинг :   

Re: несколько категорий у новости

Это просто замечательно. Большое спасибо.

Не в сети

Подвал раздела

Работает на FluxBB