Bonjour à tous,

Je possède une table A (ida, idb, context). Selon le contexte (qui ne peut prendre que deux valeurs possibles), un seul idb sera lié à un ou plusieurs ida.

Je dois faire une requête SELECT qui renvoie les associations idb à ida dans les différents contextes, donc la première colonne sera un idb, et la seconde un tableau d'idb.

(les idb référence une table B mais c'est pas important, faut juste les récupérer)

Un petit exemple du résultat que j'attends :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
A:ida   A:idb   A:context
1        1        1
1        2        0
1        3        0
1        4        0
 
=> résultat attendu :
1, ARRAY[2,3,4]
Voici ce que j'ai fait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
   sub.id, ARRAY(
      SELECT
         a.ida
      FROM
         A a
      WHERE
         a.context = 0 AND ida = sub.id)
   FROM
   (
      SELECT
         a.id
      FROM
         A a
      WHERE
         a.context = 1
   ) sub;
Le soucis c'est que sur mon jeu de données, cette requête est très très très très longue

Auriez-vous des optimisations à me proposer ?

Merci à vous,
A bientôt