[erlang-questions] Fetching several ets keys

Sverker Eriksson <>
Thu Feb 9 12:24:01 CET 2012


ets:select will not do a full scan if the key is bound:

ets:select(Tid, [{{Key,'_'},[],['$_']} || Key <- ["A","B","C"]]).

But you should specify the key in the first part of the matchspec tuple, 
not use a $-variable and '=='.

/Sverker, Erlang/OTP Ericsson

Ahmed Omar wrote:
> Hynek,
> Yes you are right, if the table is big full scan is not a good idea.
>
> 2012/2/9 ori brost <>
>
>   
>> The question is whether there is any way that I can avoid the
>> "erlang-to-c call" cost and do these 4 lookups (i.e. with one ets call
>> do lookup for all 4).
>>
>> On Thu, Feb 9, 2012 at 1:00 PM, Hynek Vychodil <> wrote:
>>     
>>> This code will cause table full scan which usually will be far slower
>>>       
>> than just
>>     
>>> [ V || K <- ["A","B","C","D"], V <- ets:lookup(Tid, K) ]
>>> except very small tables full scan will not be good idea.
>>>
>>> On Thu, Feb 9, 2012 at 11:49 AM, Ahmed Omar <>
>>>       
>> wrote:
>>     
>>>> ets:select(Tid, [{{'$1','$2'},[{'==','$1',X}],['$_']}|| X<-
>>>> ["A","B","C","D"]]).
>>>>
>>>>
>>>> On Thu, Feb 9, 2012 at 11:11 AM, dmitry kolesnikov <
>>>>         
>> >
>>     
>>>> wrote:
>>>>         
>>>>> You could try
>>>>> ets:select or qlc interface.
>>>>>
>>>>> It table is not big enough then qlc and custom fold function would
>>>>>           
>> work:
>>     
>>>>> Q=qlc:q([ X || X <- ets:table(mytab)]),
>>>>> qlc:fold(FoldFun, [], Q)
>>>>>
>>>>> Best Regards,
>>>>> Dmitry >-|-|-*>
>>>>>
>>>>>
>>>>> On 9.2.2012, at 11.40, ori brost <> wrote:
>>>>>
>>>>>           
>>>>>> Is there any way in ets to fetch values for several keys in 1 call?
>>>>>> i.e. something like
>>>>>>
>>>>>> ets:multi_fetch(Tid, ["A","B","C","D"]) % will fetch all entries with
>>>>>> keys A, B, C, D
>>>>>> _______________________________________________
>>>>>> erlang-questions mailing list
>>>>>> 
>>>>>> http://erlang.org/mailman/listinfo/erlang-questions
>>>>>>             
>>>>> _______________________________________________
>>>>> erlang-questions mailing list
>>>>> 
>>>>> http://erlang.org/mailman/listinfo/erlang-questions
>>>>>           
>>>>
>>>> _______________________________________________
>>>> erlang-questions mailing list
>>>> 
>>>> http://erlang.org/mailman/listinfo/erlang-questions
>>>>
>>>>         
>>>
>>> --
>>> Hynek Vychodil
>>> BI consultant
>>>
>>> GoodData
>>> náměstí 28. října 1104/17, 602 00, Brno - Černá Pole
>>> Office:   +420 530 50 7704
>>> E-mail:  
>>> Web:     www.gooddata.com
>>>       
>
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>   






More information about the erlang-questions mailing list