# Problème de performance sur dashboard avec beaucoup de graphiques

**URL:** <https://community.gladysassistant.com/t/probleme-de-performance-sur-dashboard-avec-beaucoup-de-graphiques/7522>\
**Category:** Configuration\
**Created:** [Septembre 11, 2022, 6:27 UTC](https://community.gladysassistant.com/t/probleme-de-performance-sur-dashboard-avec-beaucoup-de-graphiques/7522 "2022-09-11T18:27:48Z")\
**Posts on this page:** 1\
**Showing post:** 6

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [Septembre 12, 2022, 2:20 UTC](https://community.gladysassistant.com/t/probleme-de-performance-sur-dashboard-avec-beaucoup-de-graphiques/7522/6 "2022-09-12T14:20:38Z")

</div>

Merci @Checconio pour la DB que tu m’as envoyé en privée, j’ai pu effectuer un petit audit de performance sur tes données et ça m’a beaucoup aidé, j’ai trouvé le souci ! 🙂

Déjà, le souci était très clair, c’était hyper lent même sur ma machine de développement qui est assez puissante, je sais pas comment tu fais pour supporter ça c’était ultra lent ^^

Pour imager, je voyais ça:

 ![Screenshot 2022-09-12 at 15.48.17](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/2/2e2323f8d92063d525e4c3f8e10396d88427268f.jpeg)

Quasi 40 secondes pour afficher la page, c’est juste énorme ^^

J’ai passé Gladys localement en mode debug pour voir les requêtes SQL exécutés et je suis allé les jouer manuellement sur la DB, «&nbsp;en direct&nbsp;».

 ![Screenshot 2022-09-12 at 15.55.40](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/0/066c342dcb246844a88d49302892f20c7abeafdb.png)

6 secondes pour une requête qui renvoie rien, c’est beaucoup !

J’ai donc tiré la pelote, il y a 2 conditions sur cette query (WHERE device\_feature\_id = ? AND created\_at \>= ?), et ces deux attributs ont bien un index…

J’exécute EXPLAIN QUERY PLAN pour comprendre ce que fait SQLite, et je comprends.

SQLite pouvait utiliser l’index sur device\_feature\_id pour aller chercher tous les états de cette fonctionnalité, mais ensuite il faisait un scan sequentiel pour aller filtrer par date: **l’index sur date n’était pas utilisé**.

La solution est tout simple, il suffit d’ajouter un index qui couvre les 2 attributs utilisés lors de la requête.

J’ai donc rajouté 2 index sur device\_feature\_state et t\_device\_feature\_state\_aggregate couvrant les attributs utilisés lors des requêtes du tableau de bord.

```auto
await queryInterface.addIndex('t_device_feature_state', ['device_feature_id', 'created_at']);
await queryInterface.addIndex('t_device_feature_state_aggregate', ['device_feature_id', 'type', 'created_at']);

```

Et là: bam! Cette même requête passe de 6 secondes à… 5ms !! 😬

Sur la totalité de la page, on passe de 40 secondes à… 100 ms sur ma machine !

Je te l’avais dis, c’était pas du à SQlite, on aurait eu le même soucis sur MySQL 😉

J’ai fais une PR qui corrige le souci, ça partira dans la prochaine version de Gladys:

> <https://github.com/GladysAssistant/Gladys/pull/1600>
>
> \### Pull Request check-list
> 
> To ensure your Pull Request can be accepted as fa…st as possible, make sure to review and check all of these items:
> 
> \- \[\] If your changes affects code, did your write the tests?
> \- \[\] Are tests passing? (\`npm test\` on both front/server)
> \- \[\] Is the linter passing? (\`npm run eslint\` on both front/server)
> \- \[\] Did you run prettier? (\`npm run prettier\` on both front/server)
> \- \[\] If you are adding a new features/services, did you run integration comparator? (\`npm run compare-translations\` on front)
> \- \[\] Did you test this pull request in real life? With real devices? If this development is a big feature or a new service, we recommend that you provide a Docker image to \[the community\](https://community.gladysassistant.com/) for testing before merging.
> \- \[\] If your changes modify the API (REST or Node.js), did you modify the API documentation? (Documentation is based on comments in code)
> \- \[\] If you are adding a new features/services which needs explanation, did you modify the user documentation? See \[the GitHub repo\](https://github.com/GladysAssistant/v4-website) and the \[website\](https://gladysassistant.com).
> \- \[\] Did you add fake requests data for the demo mode (\`front/src/config/demo.js\`) so that the demo website is working without a backend? (if needed) See \[https://demo.gladysassistant.com\](https://demo.gladysassistant.com).
> 
> NOTE: these things are not required to open a PR and can be done afterwards / while the PR is open.
> 
> \### Description of change
> 
> Please provide a description of the change here. It's always best with screenshots, so don't hesitate to add some!

@Terdious @lmilcent ça va vous intéresser vous qui avez beaucoup de data !

---

_[View the full topic](https://community.gladysassistant.com/t/probleme-de-performance-sur-dashboard-avec-beaucoup-de-graphiques/7522)._
