Я новичок в программировании, и этот форум так голый со мной. Я использую этот запрос на своем веб-сайте, чтобы найти список ToDo на основе определенных критериев. Но он работает слишком медленно, и, вероятно, можно написать его по-другому.Как это сделать быстрее?
SELECT * FROM lesson WHERE
id IN
(SELECT `lesson_id` FROM `localization_logging`
WHERE `language_id` = 2 AND `action_id` = 1)
AND `id` NOT IN
(SELECT `lesson_id` FROM `localization_logging`
WHERE `language_id` = 2 AND `part_id` = 1 AND `action_id` = 6)
Что запрос делает то, что он смотрит в таблицу урока, чтобы найти все имена список уроков, а затем проверяет, является ли конкретная задача выполнена. Если задача выполняется в одном списке, чем в следующем. Действие 1 выполняется, но не действие 6 в этом случае.
Надеюсь, я объясню это достаточно хорошо. На моей локальной машине запрос занимает 1,8 секунды, и иногда мне приходится печатать несколько списков рядом друг с другом, а затем он занимает в 1,8 раза больше списков, что делает загрузку страницы очень медленной.
Спасибо за помощь, которую я могу получить!
Прежде всего, чтобы увидеть, что делает база данных: EXPLAIN yourQuery; и опубликуйте результат, тогда мы сможем увидеть, что произошло –