J'ai une base de données MySQL avec une table avec environ 160.000 entrées. Lorsque je fais une recherche les requêtes suivantes, il faut environ 0,5 secondes de exeuction:MySQL requête avec deux conditions booléennes prend beaucoup plus de temps que d'interroger chaque condition séparat
SELECT * FROM table WHERE EXTRACT(HOUR FROM date) > 18;
SELECT * FROM table WHERE EXTRACT(HOUR FROM date) < 3;
Après avoir combiné les déclarations en une seule requête comme celui-ci
SELECT * FROM table WHERE EXTRACT(HOUR FROM date) > 18 OR EXTRACT(HOUR FROM date) < 3;
l'exécution prend une éternité. En fait, je n'ai pas vu la requête terminer l'exécution et l'annuler après environ 20 minutes.
Quand je change le OU à et par exemple comme ceci:
SELECT * FROM table WHERE EXTRACT(HOUR FROM date) > 10 AND EXTRACT(HOUR FROM date) < 19;
Le temps d'exécution est en millisecondes à nouveau.
Peut somenone s'il vous plaît expliquer ce comportement étrange et peut-être suggérer une solution pour interroger les deux conditions avec OR.
Nous vous remercions à l'avance