Как оптимизировать запрос с Left Join? - MySQL

Узнай цену своей работы

Формулировка задачи:

Есть такой запрос, выполняется очень долго (30 секунд), в базе в таблице news 85 тысяч записей, а в rels 45 миллионов. Помогите пожалуйста оптимизировать запрос.
//сама новость
$result = mysqli_query($con, "SELECT * FROM news WHERE id = $id");
$row = mysqli_fetch_assoc($result);
print_r($row);
 
//похожие новости
$result = mysqli_query($con, "SELECT similar_id, news.title, news.text, news.link FROM rels LEFT JOIN news ON news.id = rels.similar_id WHERE rels.news_id = $id LIMIT 100");
while($row = mysqli_fetch_assoc($result))
{
    print_r($row);
}

Решение задачи: «Как оптимизировать запрос с Left Join?»

textual
Листинг программы
SELECT rels.similar_id FROM rels WHERE rels.news_id = $id

Объяснение кода листинга программы

В представленном коде выполняется следующая последовательность действий:

  1. Указание имени базы данных, с которой будет работать запрос - news_db.
  2. Определение таблицы, с которой будет производиться работа - rels.
  3. Формулировка запроса на языке SQL с использованием оператора SELECT.
  4. Выбор поля similar_id из таблицы rels.
  5. Указание условия для фильтрации результатов запроса - rels.news_id = $id.
  6. Использование оператора WHERE для применения условия к результатам запроса.
  7. Ожидаемый результат - выборка значений поля similar_id из таблицы rels, удовлетворяющих условию rels.news_id = $id. Список действий в виде нумерованного списка с выделением названий и значений переменных в кавычки:
  8. news_db - название базы данных
  9. rels - название таблицы
  10. SELECT rels.similar_id - название поля и оператор SELECT
  11. $id - значение переменной, используемое в условии
  12. rels.news_id = $id - условие для фильтрации результатов запроса
  13. WHERE - оператор для применения условия к результатам запроса
  14. Ожидаемый результат - выборка значений поля similar_id из таблицы rels, удовлетворяющих условию rels.news_id = $id.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.714 из 5