In PostgreSQL heb ik een Stored Procedure gemaakt:
De SP geeft een aantal resultaten terug die voldoen aan category_id. Nu wil ik deze SP aanroepen voor een bepaald aantal category_id.
De SP wordt uitgevoerd in ongeveer 1,8 seconden (prima). Maar de kolommen van de SP worden als één kolom teruggeven:
Waar ik juist deze uitvoer wil:
Dat zou ik kunnen bereiken door de query als volgt aan te passen:
Maar dan duurt m'n query maar liefst 7 seconden!
Waarom duurt dit zo lang? Kan ik op een andere manier de SP uitvoeren voor de verzameling category_id?
SQL:
1
| CREATE FUNCTION sp_test(arg_category_id INTEGER) |
De SP geeft een aantal resultaten terug die voldoen aan category_id. Nu wil ik deze SP aanroepen voor een bepaald aantal category_id.
SQL:
1
2
3
| SELECT sp_test(C.id) FROM categories C WHERE C.active = TRUE |
De SP wordt uitgevoerd in ongeveer 1,8 seconden (prima). Maar de kolommen van de SP worden als één kolom teruggeven:
sp_test ------- (a,b,c) (d,e,f)
Waar ik juist deze uitvoer wil:
kolom1 | kolom2 | kolom3 ------------------------ a | b | c d | e | f
Dat zou ik kunnen bereiken door de query als volgt aan te passen:
SQL:
1
2
3
| SELECT (sp_test(C.id)).* FROM categories C WHERE C.active = TRUE |
Maar dan duurt m'n query maar liefst 7 seconden!
Waarom duurt dit zo lang? Kan ik op een andere manier de SP uitvoeren voor de verzameling category_id?
"If you see a light at the end of a wormhole, it's probably a photon torpedo!"