Un client — relevé SQL du 10 octobre 2026, vers 13 h 29 CEST. MariaDB 11.8.9-deb13 ; PHP 8.4 / mysqli ; socket local. 1 passage de chauffe exclu, 10 passages par variante, ordre alterné. Code de production déjà corrigé ; ancienne requête rejouée pour comparaison. 61 graphes identiques, 995 307 octets de SVG. Total médian 5 068,52 ms avant ; 12,92 ms après. Aucune mesure HTTP ni navigateur dans ce relevé. Actualisation de session exécutée dans une transaction annulée par ROLLBACK. Valeurs de session non publiées. Données brutes individuelles non disponibles ici. ## Détail des 16 requêtes (10 chargements par version, chauffe exclue) | # | Requête | Lignes | Avant médiane (ms) | Après médiane (ms) | Avant min–max | Après min–max | |---|---|---|---|---|---|---| | 1 | Lire la session de connexion | 1 | 0,34 | 0,34 | 0,17–1,12 | 0,16–0,88 | | 2 | Actualiser la session (UPDATE, ROLLBACK) | 0 | 0,16 | 0,19 | 0,12–0,61 | 0,14–0,23 | | 3 | Charger les 61 graphes et leurs dimensions | 61 | 5 044,59 | 3,32 | 4 434,17–5 297,38 | 2,69–6,20 | | 4 | Lister les clients | 15 | 0,53 | 0,29 | 0,32–2,48 | 0,18–0,57 | | 5 | Lister les environnements | 11 | 0,78 | 0,15 | 0,41–2,98 | 0,12–0,31 | | 6 | Lister les tags | 76 | 0,60 | 0,22 | 0,28–1,26 | 0,17–0,29 | | 7 | Chercher le fil de navigation | 0 | 1,59 | 0,64 | 0,59–3,56 | 0,50–1,09 | | 8 | Construire le menu | 96 | 5,26 | 4,24 | 4,06–9,06 | 3,41–9,02 | | 9 | Compter les alarmes actives | 1 | 9,21 | 0,85 | 1,89–15,55 | 0,72–2,56 | | 10 | Sélectionner la rubrique du menu | 2 | 0,78 | 0,66 | 0,53–1,88 | 0,53–1,15 | | 11 | Vérifier la clé de traduction | 0 | 0,53 | 0,15 | 0,36–0,83 | 0,12–0,26 | | 12 | Lire la traduction | 0 | 0,48 | 0,18 | 0,17–1,40 | 0,15–0,23 | | 13 | Vérifier la table de configuration | 1 | 0,20 | 0,17 | 0,16–0,46 | 0,14–1,11 | | 14 | Lire les paramètres de licence | 10 | 0,17 | 0,15 | 0,14–0,25 | 0,12–0,23 | | 15 | Vérifier la table des bandeaux masqués | 1 | 0,18 | 0,15 | 0,14–0,25 | 0,13–0,21 | | 16 | Lire le masquage du bandeau de licence | 1 | 0,30 | 0,13 | 0,10–0,58 | 0,09–0,22 | | | **Total (médiane des sommes par chargement)** | | **5 068,52** | **12,92** | 4 450,09–5 318,08 | 9,96–18,88 | Seule la requête 3 change de SQL. Les écarts sur les autres (ex. #9 alarmes 9,21 → 0,85 ms) ne sont pas attribuables au correctif : ils apparaissent derrière une requête de 5 s sur un hôte chargé (load ≈ 6). Leurs médianes restent sous 10 ms ; la cause des fluctuations n’est pas isolée. ## Plans EXPLAIN Avant (EXISTS) : ``` 1 PRIMARY di range is_svg_generated 77512 Using where; Using index 1 PRIMARY eq_ref distinct_key 1 2 MATERIALIZED dc_ready range id_dot3_information_2 4406092 Using where; Using index ``` Après (scalaire) : ``` 1 PRIMARY di range is_svg_generated 77512 Using where; Using index 2 DEPENDENT SUBQUERY dc_ready ref id_dot3_information_2 81 Using index ```