280 000 lignes.
Un index. Le même résultat.
Je relève le plan d’exécution, les lignes lues et les temps. Puis je retire l’index pour vérifier le retour arrière.
Avant, après, puis retour arrière.
| Étape | Accès | Lignes lues | ANALYZE, une exécution | Médiane de sept lectures CLI |
|---|---|---|---|---|
| Avant index | ALL | 280 000 | 99,377 ms | 144,6 ms |
| Avec index | range | 50 | 0,178 ms | 55,4 ms |
| Index retiré | ALL | 280 000 | 87,555 ms | 144,3 ms |
La dernière colonne comprend le lancement du client. ANALYZE et durée CLI mesurent deux choses distinctes. Le tableau défile dans son cadre sur mobile.
Le résultat reste identique.
La requête filtre boutique, état et date, puis retourne les cinquante dernières commandes. L’empreinte des lignes reste la même avant index, avec index et après son retrait. Le plan utilise l’index quand il existe et revient au parcours initial après suppression.
SELECT id_order, reference, total_paid FROM demo_orders WHERE id_shop=3 AND current_state=2 AND date_add>='2026-09-01' ORDER BY date_add DESC, id_order DESC LIMIT 50; CREATE INDEX demo_filter ON demo_orders (id_shop, current_state, date_add, id_order);
Les six contrôles et les limites
Nombre de lignes, sept répétitions stables par phase, cinquante résultats identiques, index utilisé, index retiré, même résultat après retour arrière. Le serveur a été arrêté après l’exécution.
MariaDB11.8.6 et buffer InnoDB64Mo. Les sept durées incluent le client CLI ; l’ANALYZE n’a qu’une exécution par étape. Aucun trafic concurrent, écriture client, PrestaShop ou API Amazon. Les effets sur les autres requêtes et sur les écritures ne sont pas mesurés par cet exemple. Les binaires MariaDB ne sont pas inclus dans l’archive.
Exécution : 2 octobre 2026 à 14:09:55 Paris.
Source : Mesures ANALYZE de MariaDB.