MOD optimisation de la fonction parents_id
authorGreg Burri <greg.burri@gmail.com>
Sun, 27 Jul 2008 11:11:04 +0000 (11:11 +0000)
committerGreg Burri <greg.burri@gmail.com>
Sun, 27 Jul 2008 11:11:04 +0000 (11:11 +0000)
modules/erl/euphorik_bd.erl

index 1cd534e..dff71db 100755 (executable)
@@ -455,18 +455,20 @@ enfants(M_id) ->
    )).\r
    \r
    \r
-% Renvoie les parents d'un message M (les messages auquels répond M)\r
+% Renvoie les id des parents d'un message M (les messages auquels répond M)\r
 % ordrés du plus petit au plus grand..\r
+% On évite d'utiliser qlc pour des raisons de performance\r
 % @spec parents_id(integer()) -> [integer()]\r
-parents_id(M) ->\r
+parents_id(M_id) ->\r
    resultat_transaction(mnesia:transaction(fun() ->\r
-      e(\r
-         qlc:sort(\r
-            q([E#reponse_minichat.cible || E <- mnesia:table(reponse_minichat), E#reponse_minichat.repondant =:= M]),\r
-            [{order, ascending}]\r
-         ),\r
-         [{tmpdir, ?KEY_SORT_TEMP_DIR}]\r
-      )\r
+      case mnesia:read({reponse_minichat, M_id}) of\r
+         Parents when is_list(Parents) ->\r
+            lists:sort(lists:map(\r
+               fun(#reponse_minichat{cible = Cible}) -> Cible end,\r
+               Parents\r
+            ));\r
+         _ -> []            \r
+      end\r
    end)).\r
    \r
    \r