[erlang-questions] Question: Limiting size of result set in mnesia

Ahmed Ali <>
Tue Apr 29 08:19:48 CEST 2008


Thanks All. Now it is more clear to me.

On Mon, Apr 28, 2008 at 10:38 PM, Ulf Wiger <> wrote:
> When selecting over a very large set, you may want QLC to retrieve
>  the data in chunks. Then, n_elements can be used to instruct the
>  table generators to return only a number of elements at a time.
>  This is something that might specify when implementing a QLC
>  table generator, I think.
>
>  This can have a beneficial effect on garbage collection, as the
>  process may be able to perform the work with a fairly small
>  heap. In simple queries (no joins or complex filter expressions),
>  it's not likely to help much, but it can improve memory
>  characteristics in some cases.
>
>  BR,
>  Ulf W
>
>  2008/4/28 Ahmed Ali <>:
>
>
> > Hi Hynek,
>  >
>  >  Thanks for the clarification. However, I still don't understand what's
>  >  the point of  n_elements in qlc:info(Q,[{n_elements,N}]). In QLC
>  >  documentation, it names 2 kinds of options, "Option = EvalOption |
>  >  ReturnOption" which suggests that qlc:info/2 can be used to set
>  >  evaluation time options.
>  >
>  >  Also, I'm assuming I can remove {unique, true} option from
>  >  qlc:append/2 and the result is still the same.
>  >
>  >
>  >  Best regards,
>  >
>  >  Ahmed Al-Issaei
>  >
>  >
>  >
>  > On Mon, Apr 28, 2008 at 5:26 PM, Hynek Vychodil
>  >  <> wrote:
>  >  > No, qlc:info just returns info. You should use cursor and next_answers.
>  >  >
>  >  > Just from documentation:
>  >  > C = qlc:cursor(qlc:q([X || X <- qlc:append(QH1, QH2)],{unique,true})),
>  >  > R = qlc:next_answers(C, 5),
>  >  > ok = qlc:delete_cursor(C),
>  >  >
>  >  > R.
>  >  >
>  >  >
>  >  >
>  >  > On Mon, Apr 28, 2008 at 2:42 PM, Ahmed Ali <> wrote:
>  >  > > Thanks Hynek and Kenneth for the quick response.
>  >  > >
>  >  > > Just to confirm, for qlc, I should write the query first and then run
>  >  > > qlc:info/2 on it in order to do the limiting, as the example below
>  >  > > shows. Is this it?
>  >  > >
>  >  > > e.g.:
>  >  > > Q = qlc:q(...),
>  >  > > qlc:info(Q, [{n_elements, 5}]
>  >  > >
>  >  > >
>  >  > > Best regards,
>  >  > >
>  >  > > Ahmed Al-Issaei
>  >  > >
>  >  > >
>  >  > >
>  >  > >
>  >  > > On Mon, Apr 28, 2008 at 4:32 PM, Kenneth Lundin
>  >  > > <> wrote:
>  >  > > > Hi,
>  >  > > >
>  >  > > >  You can use qlc
>  >  > > >  http://www.erlang.org/doc/man/qlc.html
>  >  > > >   or you can use
>  >  > > >  mnesia:select/4 in combination with mnesia:select/1
>  >  > > >  http://www.erlang.org/doc/man/mnesia.html#select-4
>  >  > > >
>  >  > > >  /Kenneth Erlang/OTP, Ericsson
>  >  > > >
>  >  > > >
>  >  > > >
>  >  > > >
>  >  > > >  On 4/28/08, Ahmed Ali <> wrote:
>  >  > > >  > Hi All,
>  >  > > >  >
>  >  > > >  > Does anyone have an idea of how to limit size of result set in mnesia
>  >  > > >  > similar to the effect of LIMIT clause in the SQL query below in
>  >  > MySQL?
>  >  > > >  >
>  >  > > >  > SELECT * FROM Topic LIMIT 5;
>  >  > > >  >
>  >  > > >  > Best regards,
>  >  > > >  >
>  >  > > >  > Ahmed Al-Issaei
>  >  > > >
>  >  > > >
>  >  > > > > _______________________________________________
>  >  > > >  > erlang-questions mailing list
>  >  > > >  > 
>  >  > > >  > http://www.erlang.org/mailman/listinfo/erlang-questions
>  >  > > >  >
>  >  > > >
>  >  > > _______________________________________________
>  >  > > erlang-questions mailing list
>  >  > > 
>  >  > > http://www.erlang.org/mailman/listinfo/erlang-questions
>  >  > >
>  >  >
>  >  >
>  >  >
>  >  > --
>  >  > --Hynek (Pichi) Vychodil
>  >  _______________________________________________
>  >  erlang-questions mailing list
>  >  
>  >  http://www.erlang.org/mailman/listinfo/erlang-questions
>  >
>



More information about the erlang-questions mailing list