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

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

Вы не зашли.

#2 Запросы на доработку ядра » несколько категорий у новости » 2009-03-27 09:25:07

FDVFlex
Ответов: 2

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

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

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

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

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

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

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

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

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

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

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

Работает на FluxBB