Erlang ets匹配\u对象与匹配规范 -记录(规则,{id,low,high})。 测试工具()-> ets:新(规则表,[命名表,公共,bag]), ets:insert(规则表,#规则{id=1,低=2,高=5}), ets:match_对象(规则_表,[{'$1',[{'>=',{element,#rule.low,'$1'},2}, {'=

Erlang ets匹配\u对象与匹配规范 -记录(规则,{id,low,high})。 测试工具()-> ets:新(规则表,[命名表,公共,bag]), ets:insert(规则表,#规则{id=1,低=2,高=5}), ets:match_对象(规则_表,[{'$1',[{'>=',{element,#rule.low,'$1'},2}, {'=,erlang,ets,Erlang,Ets,我错了,用ets:select代替 但是使用matchSpec的性能如何?是否都是表扫描?是的,将扫描整个表以查找匹配的数据。有关更多信息,请参阅。 -record(rule, {id, low, high}). test_ets() -> ets:new(rule_table,[named_table,public,bag]), ets:insert(rule_table, #rule{id=1, low=2, high=5}), ets:match_ob

我错了,用ets:select代替


但是使用matchSpec的性能如何?是否都是表扫描?

是的,将扫描整个表以查找匹配的数据。有关更多信息,请参阅。
 -record(rule, {id, low, high}).


 test_ets() ->
    ets:new(rule_table,[named_table,public,bag]),
    ets:insert(rule_table, #rule{id=1, low=2, high=5}),
    ets:match_object(rule_table, [{'$1',[{'>=', {element, #rule.low, '$1'}, 2}, 
            {'=<', {element, #rule.high, '$1'}, 5} 
            ], ['$_']}]).