@grechinaoleg

Как оптимизировать запрос к БД MySQL?

Всем доброго времени суток!
Попался мне сайт в руки, а там выборка контента в категориях идет при помощи поиска по строке в json формате через LIKE.
В таблице content, есть поле category и вот пример, как оно может быть заполнено:
["9","18","26"]
Соответственно, если открываем страницу с категорией под номером 9, то получаем запрос на выборку из таблицы content:
$id = 9;
$obj = '"'.$id.'"';
$query="SELECT `content`.* FROM `content` WHERE `content`.`category` LIKE '%$obj%'";

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

Как можно оптимизировать таблицу, чтобы избавится от LIKE?
  • Вопрос задан
  • 258 просмотров
Пригласить эксперта
Ответы на вопрос 3
longclaps
@longclaps
Править надо базу: добавить таблицу content-category, проиндексировать по category и зажить нормально.
Ответ написан
Комментировать
AStek
@AStek
Полнотекстовой индекс пробовали?
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
если там тру жсон - последние мускули умеют по нему искать нативно, это если очень лень внести нормализацию в базу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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