Optimisation d'une requête SQL sur 10 millions de lignes - EXPLAIN bizarre

MySQL, PostgreSQL, requetes, optimisation
zed.g
Messages : 166
Inscription : ven. oct. 03, 2025 7:24 pm

Optimisation d'une requête SQL sur 10 millions de lignes - EXPLAIN bizarre

Message par zed.g »

Je galère sur une requête qui scanne 10M de lignes malgré un index. EXPLAIN montre 'Using index condition' mais 12s d'exécution ! Voici le schéma : table `orders` (id, user_id, date, amount) avec INDEX(user_id, date).
Dev le jour, gamer la nuit
codeur1974
Messages : 185
Inscription : dim. mars 17, 2024 7:24 pm

Re: Optimisation d'une requête SQL sur 10 millions de lignes - EXPLAIN bizarre

Message par codeur1974 »

Peux-tu partager la requête exacte ? Le problème vient peut-être d'un CAST implicite ou d'une condition OR mal optimisée.
zed.g
Messages : 166
Inscription : ven. oct. 03, 2025 7:24 pm

Re: Optimisation d'une requête SQL sur 10 millions de lignes - EXPLAIN bizarre

Message par zed.g »

C'est un simple SELECT * FROM orders WHERE user_id = 123 AND date BETWEEN '2023-01-01' AND '2023-06-30'. Le plan montre qu'il utilise bien l'index mais... lent !
Dev le jour, gamer la nuit
devjunkie.m
Messages : 54
Inscription : mar. sept. 12, 2023 7:25 pm

Re: Optimisation d'une requête SQL sur 10 millions de lignes - EXPLAIN bizarre

Message par devjunkie.m »

As-tu analysé la distribution des données ? Si user_id=123 a 500k commandes, l'index ne suffit pas. Essaye FORCE INDEX et compare.
Un Live USB toujours dans la poche
zed.g
Messages : 166
Inscription : ven. oct. 03, 2025 7:24 pm

Re: Optimisation d'une requête SQL sur 10 millions de lignes - EXPLAIN bizarre

Message par zed.g »

Bonne idée ! FORCE INDEX réduit à 3s. Mais c'est bizarre que l'optimiseur ne choisisse pas ça seul. Je vais vérifier les stats avec ANALYZE TABLE.
Dev le jour, gamer la nuit
Répondre