MySQL выполнение запроса очень медленное

0

У меня есть этот запрос:

UPDATE invitations SET added=added+1 WHERE chat_id NOT IN (SELECT * FROM (SELECT LEFT(name,14) AS chat_id FROM rules WHERE name LIKE '-%-credit' AND value< 1522744396) AS iner)

каждый раз, когда я выполняю его, он принимает как возраст, и он никогда не делает то, что я хочу, чтобы он делал. например, я запустил его сейчас, и до сих пор он занял 1600 секунд, и ничего не произошло. В шоу-списке дел я вижу, что он находится в состоянии "Отправка данных". Что случилось с этим запросом?

Правила таблицы имеют не более 100K строк, а внутренний запрос возвращается как строки 2K. результаты внутреннего запроса - это один столбец и похожи на: chat_id -1001167043635 -1001167043643...

когда я запускаю только внутренний запрос, он занимает около 0,007 секунды.

И таблица приглашений имеет 500K строк и выглядит так: user_id | chat_id | добавлено 55545323 | -1001167043635 | 23

было бы признательно, если вы скажете мне, что я сделал не так, и скажите, как это исправить.

  • 0
    Использование * в запросе выбора снизит производительность кода
  • 0
    @Ajay Ajay Я только что тестировал и забыл удалить лишний выбор *, такая же проблема случается и без этого.
Теги:

2 ответа

0

Вы можете подумать, что подзапрос в NOT IN выполняется только один раз для всего запроса. Дело в том, что для каждой строки в OUTER QUERY, INNER QUERY будет выполняться один раз. Мы столкнулись с этим вопросом один раз. Проверьте с запросом mysql EXPLAIN.

  • 0
    Не могли бы вы привести пример с EXPLAIN?
0

Почему вы запускаете "Выбрать"? Внутренний выбор не заполняет ваш запрос?

Установили ли вы индекс в chat_id?

  • 0
    Я только что тестировал, и я забыл удалить этот дополнительный выбор *, такая же проблема происходит даже без этого.
  • 0
    Я не добавил индекс для идентификатора чата, потому что могут быть повторяющиеся значения, и он не уникален. но есть уникальное свойство как user_id, так и chat_id
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню