[erlang-questions] qlc cursor offset

Andre Nathan <>
Tue Dec 28 18:43:17 CET 2010


On Tue, 2010-12-28 at 12:48 -0330, Alain O'Dea wrote:
> I code-shopped Paul Mineiro's solution when I needed to do efficient
> pagination with Mnesia like this for scrumjet:

Doesn't this solution simply fetch and drop all results until the offset
is reached? Is it better in terms of performance than the code below?

limit(Table, Offset, Number) ->
  TH = qlc:keysort(2, mnesia:table(Table)),
  QH = qlc:q([Q || Q <- TH]),
  QC = qlc:cursor(QH),
  %% Drop initial resuls. Handling of Offset =:= 0 not shown.
  qlc:next_answers(QC, Offset - 1),
  Results = qlc:next_answers(QC, Number),
  qlc:delete_cursor(QC),
  Results.

Thanks,
Andre



More information about the erlang-questions mailing list