From: Greg Burri Date: Sun, 27 Jul 2008 11:11:04 +0000 (+0000) Subject: MOD optimisation de la fonction parents_id X-Git-Tag: 1.1.0~38 X-Git-Url: http://git.euphorik.ch/index.cgi?a=commitdiff_plain;h=654e586482addf692991118ab9a4c5ead082457e;p=euphorik.git MOD optimisation de la fonction parents_id --- 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)).