Thanks for the tip Sverker.<br><br><div class="gmail_quote">2012/2/9 Sverker Eriksson <span dir="ltr"><<a href="mailto:sverker@erix.ericsson.se">sverker@erix.ericsson.se</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
ets:select will not do a full scan if the key is bound:<br>
<br>
ets:select(Tid, [{{Key,'_'},[],['$_']} || Key <- ["A","B","C"]]).<br>
<br>
But you should specify the key in the first part of the matchspec tuple, not use a $-variable and '=='.<br>
<br>
/Sverker, Erlang/OTP Ericsson<br>
<br>
Ahmed Omar wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
Hynek,<br>
Yes you are right, if the table is big full scan is not a good idea.<br>
<br>
2012/2/9 ori brost <<a href="mailto:oribrost@gmail.com" target="_blank">oribrost@gmail.com</a>><br>
<br>
  <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The question is whether there is any way that I can avoid the<br>
"erlang-to-c call" cost and do these 4 lookups (i.e. with one ets call<br>
do lookup for all 4).<br>
<br>
On Thu, Feb 9, 2012 at 1:00 PM, Hynek Vychodil <<a href="mailto:hynek@gooddata.com" target="_blank">hynek@gooddata.com</a>> wrote:<br>
    <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This code will cause table full scan which usually will be far slower<br>
      <br>
</blockquote>
than just<br>
    <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
[ V || K <- ["A","B","C","D"], V <- ets:lookup(Tid, K) ]<br>
except very small tables full scan will not be good idea.<br>
<br>
On Thu, Feb 9, 2012 at 11:49 AM, Ahmed Omar <<a href="mailto:spawn.think@gmail.com" target="_blank">spawn.think@gmail.com</a>><br>
      <br>
</blockquote>
wrote:<br>
    <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
ets:select(Tid, [{{'$1','$2'},[{'==','$1',X}],<u></u>['$_']}|| X<-<br>
["A","B","C","D"]]).<br>
<br>
<br>
On Thu, Feb 9, 2012 at 11:11 AM, dmitry kolesnikov <<br>
        <br>
</blockquote></blockquote>
<a href="mailto:dmkolesnikov@gmail.com" target="_blank">dmkolesnikov@gmail.com</a>><br>
    <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
wrote:<br>
        <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
You could try<br>
ets:select or qlc interface.<br>
<br>
It table is not big enough then qlc and custom fold function would<br>
          <br>
</blockquote></blockquote></blockquote>
work:<br>
    <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Q=qlc:q([ X || X <- ets:table(mytab)]),<br>
qlc:fold(FoldFun, [], Q)<br>
<br>
Best Regards,<br>
Dmitry >-|-|-*><br>
<br>
<br>
On 9.2.2012, at 11.40, ori brost <<a href="mailto:oribrost@gmail.com" target="_blank">oribrost@gmail.com</a>> wrote:<br>
<br>
          <br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Is there any way in ets to fetch values for several keys in 1 call?<br>
i.e. something like<br>
<br>
ets:multi_fetch(Tid, ["A","B","C","D"]) % will fetch all entries with<br>
keys A, B, C, D<br>
______________________________<u></u>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<u></u>listinfo/erlang-questions</a><br>
            <br>
</blockquote>
______________________________<u></u>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<u></u>listinfo/erlang-questions</a><br>
          <br>
</blockquote>
<br>
______________________________<u></u>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<u></u>listinfo/erlang-questions</a><br>
<br>
        <br>
</blockquote>
<br>
--<br>
Hynek Vychodil<br>
BI consultant<br>
<br>
GoodData<br>
náměstí 28. října 1104/17, 602 00, Brno - Černá Pole<br>
Office:   <a href="tel:%2B420%20530%2050%207704" value="+420530507704" target="_blank">+420 530 50 7704</a><br>
E-mail:  <a href="mailto:hynek@gooddata.com" target="_blank">hynek@gooddata.com</a><br>
Web:     <a href="http://www.gooddata.com" target="_blank">www.gooddata.com</a><br>
      <br>
</blockquote></blockquote>
<br></div></div>
  ------------------------------<u></u>------------------------------<u></u>------------<div class="im"><br>
<br>
______________________________<u></u>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<u></u>listinfo/erlang-questions</a><br>
  <br>
</div></blockquote>
<br>
<br>
<br>
</blockquote></div><br>