SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.03.2011 16:40:26

mustardandrew
Участник
Зарегистрирован: 02.03.2011
Сообщений: 2

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

Например, вот такой запрос

SELECT * FROM app_c_content WHERE category REGEXP "[[:<:]](48|49|50)[[:>:]]" ORDER BY id DESC LIMIT 1, 10

где я делаю выборку статтей, которые принадлежат категории 48 или 49 ...
поле category содержыт например строку "48,50".

Вопрос, можна это как то оптимизировать, или написать по другому, или структуру поменять, чтоб нормально работало при количестве статтей от 500 000 - 1 000 000?

Неактивен

 

#2 02.03.2011 20:09:28

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

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

Можно: сделайте отдельную табличку вхождения статей в категории.
Т.е.
CREATE TABLE article_categories (
article_id INT NOT NULL,
category_id INT NOT NULL,
UNIQUE(article_id, category_id),
INDEX(category_id));

Неактивен

 

#3 03.03.2011 11:32:37

mustardandrew
Участник
Зарегистрирован: 02.03.2011
Сообщений: 2

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

Это будет работать быстрее?

Неактивен

 

#4 03.03.2011 21:04:49

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

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

То есть Вы считаете, что я просто так предложил, посмеяться, да? smile

Хорошо, посмеюсь: будет работать быстрее с вероятностью 50% — или будет, или нет wink

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson