Optimisation d'une requête
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:
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:
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