PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Requête lourde et répétitive, vue matérialisée et COUNT
Requête lourde et répétitive, vue matérialisée et COUNT
Débuté par Ferbak, 17 mar. 2020 10:55 - 1 réponse
Membre enregistré
50 messages
Posté le 17 mars 2020 - 10:55
Bonjour à tous,

Suite à des petits soucis de lenteur qui tendent à s'amplifier avec l'accroissement des données et le volume utilisateurs, je me penche depuis deux jours sur les diverses requêtes et vues côté analyse.

Sans rentrer inutilement dans les détails, j'ai une analyse avec une 40aine de fichiers, individuellement tout tourne très bien, même si on est sur une requête sur un fichiers, qui somme ou compte sur un ou deux fichiers liés, mais j'ai trois tables de "synthèses" qui elles reprennent beaucoup plus de fichiers.
Elles reprennent des infos de plusieurs fichier, parfois deux fois via un alias, et le recalcule peut se faire de nombreuses fois en peu de temps pour un seul utilisateur. Forcément le serveur tire un peu la tête.

Il peut il y avoir des modifications potentielles en permanence dans les fichiers liés à ces synthèses, donc le calcul doit être fréquent, mais en temps réel c'est un peu inutile.

Je me suis donc penché sur les Vues Matérialisées, avec l'idée de garder en mémoire sur le serveur la partie lourde de la requête, et d'utiliser celle-ci dans une requête beaucoup plus light qui serait celle appelée par l'utilisateur.
Le refresh de la vue se faisant à intervalle régulier ou via des triggers sur chaque fichier lié.

J'ai malheureusement un souci avec un COUNT dans ma Vue matérialisée

Lorsque je fais HMiseAJourVue, je retrouve bien les données voulues dans le CCHFSQL, mais dès que je veux utiliser ces données d'une façon ou d'une autre :

Le mécanisme de sécurité HFSQL s'est déclenché lors d'un parcours intégré du fichier 'MaVueMaterialisee' sur la rubrique ''.
Erreur renvoyée par le serveur <*Adresse*> :
Impossible d'accéder au fichier.
La description de  stockée dans l'analyse est incompatible avec celle de <*Répertoire*\MaVueMaterialisee>. 

Informations supplémentaires :
Code erreur : 70016
Code erreur WD55 : 16
Module : 'WDHFSRV64.DLL (01F250064f - 25.0.120.0)
Informations de débogage :
IEWDHFSRV=32.10
Module=
Version=<25.0.120.0>
Le type de la rubrique  est différent du type décrit dans l'analyse.
EIT_TYPE_WDFILE : <2>
EIT_IDCODE : <18>
EIT_LOGICALTABLENAME : 
EIT_PATHFIC : <*Répertoire*\MaVueMaterialisee>


Au début je pensais à un souci de requête, mais même avec une nouvelle qui fait un COUNT sur une seule rubrique, même souci. En revanche le SUM fonctionne parfaitement (ce qui m'a partiellement dépanné).

Je fais donc appel à votre expérience à ce sujet car je n'ai pas trouvé ce que je voulais dans mes recherches.

Est-ce qu'il y a une "contre-indication" connue entre COUNT et une vue matérialisée, est-ce que pour mon cas, une simple vue pourrait suffire, ou une requête stockée (je ne pense pas que ce dernier cas soit pertinent dans mon cas)?

Merci en tout cas d'avance à ceux qui pourraient m'éclairer.

Bonne semaine à tous,

Ferbak
Posté le 24 septembre 2021 - 10:36
Pour éviter le problème , il ne faut pas modéliser la requête avec l'assistant mais écrire directement en code SQL