vendredi 24 juin 2016

How can I make this query run faster

I am new to programming and this forum so bare with me. I am running this query on my website in order to find a ToDo list based on specific criteria. But it runs too slow and it is probably possible to write it in another way.

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)

What the query does is that it looks in the lesson table to find all lesson list names and then checks if a specific task is done. If the task is done in one todo than show it in the next. Action 1 is done but not action 6 in this case.

I hope I'm explaining this good enough. On my local machine the query takes 1.8 seconds, and sometimes I have to print multiple lists next to each others and then it takes 1.8 times the lists which makes the page load super slow.

Thanks for all the help I can get!

Aucun commentaire:

Enregistrer un commentaire