Bonjour,

J'ai accès à une base MySQL dans laquelle chaque table comprends un champ id(CHAR36) et un champ data(longblob), max 100 000 lignes pour les tables les plus importantes, les XML pouvant atteindre les 80ko.
Cette BDD est celle mise en place avec une appli développée il y a quelques années : pas de question sur "pourquoi comme ça" .

J'ai eu accès en lecture seule uniquement afin de pouvoir l'exploiter plus que ce que permet l'appli associée.
Sauf que la structure me prends au dépourvu : chaque requête est galère à définir, chaque requête est longue et peut impacter la prod.
Alors comment faire??

-> J'aimerais déjà exploiter les données sans développer une appli, via Workbench. Idéalement, je voulais créer des vues, des procédures stockées...
J'ai voulu utiliser le FEDERED pour faire mes requête sur une table locale pointant vers le serveur distant.
Mais sans index exploitable, ça récupère toute la table à chaque fois (>5mn), aie .
Pas d'autres idées pour travailler en local (sauf à coder, mais je n'en suis pas là), je doute que ce soit possible mais si vous avez des idées....

-> A défaut, il me faut optimiser mes requêtes!
Je sais un minimum chercher dans le XML stocké, mais ne connais pas les "bonnes pratiques" pour ce type de requête...
Et je ne trouve pas grand chose sur Internet.

Le XML peut avoir plusieurs noeuds, sous-noeuds.

Exemple avec l'ID 1 :
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<a:start>2019-04-12T06:30:14Z</a:start>
 <x:div class="elt">
   <x:span class="element">Batiment1</x:span>
 </x:div>
 <x:div class="incidents">
   <x:li id="24ac3ae1-6da6">
     <x:span class="number">123456</x:span>
     <x:span class="statut">OUVERT</x:span>
   </x:li>
   <x:li id="99bc3ae1-8aa6">
     <x:span class="number">78910</x:span>
     <x:span class="statut">EN COURS</x:span>
   </x:li>
 </x:div>

Il faudrait entre autre que je récupère tous les statuts, sachant qu'il peut y en avoir plusieurs par XML.
Dans l'exemple, il faut que le XML de l'ID sorte 2 lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
ID  |  Statut 
-------------
1  |  OUVERT
1  |  EN COURS
2  |  CLOTURE
etc pour chaque ID
En cherchant un peu, ça doit être jouable, genre faire une jointure en cherchant à chaque fois un des status possible mais vu que la simple requête unique est longue, plusieurs passes vont faire mal!
Pas de procédure stockée non plus, je n'ai pas assez d'accès et ne peut le faire en local (ou ne sais pas faire).

C'est là que j'ai vraiment besoin d'un coup de pousse : sauriez-vous le faire efficacement?
J'ai entre autre une demande pour un compteur d'incident "EN COURS". Live ce compteur. Pas compatible avec des requêtes longues/lourdes

Une autres question : comment faire pour avoir la valeur d'un élément parent à partir d'un élément enfant trouvé?
Avec le XML d'exemple, je cherche les interventions statut = "EN COURS" et doit récupérer leur "number".

Merci pour votre aide.