CMS DLE и regexp в Mysql

Catalyst

Новичок
CMS DLE и regexp в Mysql

Здравствуйте.
Установлена CMS Datalife Engine.
Мучает один вопрос.

в движке таблица новостей называется dle_post , в ней поле category которое содержит список категорий новости.
запись в category имеет вид например:
17,5,9 - где 17,5,9 - id категорий.

т.е. для того чтобы сделать выборку новостей из какой-то категории(id=17 например) используется запрос:
PHP:
SELECT * FROM dle_post WHERE category regexp '[[:<:]](17)[[:>:]]'
на сайте больше 20 тыс. новостей, хостер жалуется именно на этот запрос с регуляркой.

вопрос: можно ли каким-то образом запрос переписать и оптимизировать соответственно ?
 

pilot911

Новичок
лучше включить кэширование (как простейший путь решения проблемы)

во-вторых, поискать на форуме "дле" уже найденное решение

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

Для этого придется создать еще одну таблицу типа "dle_post_linked"

c полями id, post_id, category_id и индексами по каждому полю.

В эти поля необходимо занести все категории из каждой новости и переписать запрос на следующий:

[sql]SELECT
*
FROM
dle_post_linked, dle_post
WHERE
dle_post_linked=17
AND
dle_post.id=dle_post_linked.post_id [/sql]




Я думаю, дальше все понятно.
 
Сверху