Actions
Task #88
closedChanger la méthode de récupération des messages par page
Start date:
10/07/2008
Due date:
% Done:
100%
Estimated time:
Description
Au lieu d'utiliser une table de type "ordered_set" avec les fonctions "mnesia:last" et "mnesia:prev" plutôt supposé que :
- Les ids sont contigüe. Ce n'est pas le cas actuellement (suite à un bug), il faut combler les trous avec par exemple des messages du sys à la con genre "comblage", ne pas oublier d'ajouter un statut au message pour dire qu'il est supprimé !
- On ne peut pas effacer de messages (seulement via un statut)
La récupération se faire simplement en regardant le nombre de tuples dans la table : mnesia:table_info(minichat, size).
Quelques pistes :
timer:tc(mnesia, transaction, [fun () -> qlc:e(qlc:sort(qlc:q([M#minichat.id || M <- mnesia:table(minichat), M#minichat.id > 400, M#minichat.id < 410]))) end]). : ~ 90ms timer:tc(euphorik_bd, messages, [10]) : ~ 0.3ms timer:tc(mnesia, transaction, [fun () -> qlc:e(qlc:sort(qlc:q([M#minichat.id || M <- mnesia:table(minichat), M#minichat.id =:= 400]))) end]). : ~ 20ms timer:tc(mnesia, dirty_read, [{minichat, 450}]). : ~ 0 .02ms timer:tc(mnesia, transaction, [fun() -> mnesia:read({minichat, 450}) end]). : ~ 0.1ms timer:tc(mnesia, transaction, [fun() -> lists:map(fun(Id) -> mnesia:read({minichat, Id + 400})end, lists:seq(1, 10)) end]). : ~ 0.6ms
La dernière étant la meilleure.
Actions