From 654e586482addf692991118ab9a4c5ead082457e Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Sun, 27 Jul 2008 11:11:04 +0000 Subject: [PATCH] MOD optimisation de la fonction parents_id --- modules/erl/euphorik_bd.erl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index 1cd534e..dff71db 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -455,18 +455,20 @@ enfants(M_id) -> )). -% Renvoie les parents d'un message M (les messages auquels répond M) +% Renvoie les id des parents d'un message M (les messages auquels répond M) % ordrés du plus petit au plus grand.. +% On évite d'utiliser qlc pour des raisons de performance % @spec parents_id(integer()) -> [integer()] -parents_id(M) -> +parents_id(M_id) -> resultat_transaction(mnesia:transaction(fun() -> - e( - qlc:sort( - q([E#reponse_minichat.cible || E <- mnesia:table(reponse_minichat), E#reponse_minichat.repondant =:= M]), - [{order, ascending}] - ), - [{tmpdir, ?KEY_SORT_TEMP_DIR}] - ) + case mnesia:read({reponse_minichat, M_id}) of + Parents when is_list(Parents) -> + lists:sort(lists:map( + fun(#reponse_minichat{cible = Cible}) -> Cible end, + Parents + )); + _ -> [] + end end)). -- 2.43.0