【问题标题】:Does Mnesia have something like limit in MySQL?Mnesia 在 MySQL 中有类似限制的东西吗?
【发布时间】:2016-02-25 13:30:48
【问题描述】:

我需要从 Mnesia 读取一些信息。如何使用限制来做到这一点?

【问题讨论】:

标签: database erlang mnesia


【解决方案1】:

ets(Erlang Term Storage)是ram_copiesdisc_copies Mnesia表的存储引擎,提供了获取Limit参数的函数:

  • 匹配(制表符,模式,限制)-> {[匹配],继续} | '$end_of_table'
  • match_object(制表符,模式,限制)-> {[匹配],继续} | '$end_of_table'
  • select(Tab, MatchSpec, Limit) -> {[Match], Continuation} | '$end_of_table'
  • select_reverse(Tab, MatchSpec, Limit) -> {[Match], Continuation} | '$end_of_table'

您可以将上述函数用于具有 ram_copiesdisc_copies 表类型的 Mnesia 表。

示例:

-record(person, {name, age}).

select_persons_by_age(Age, Limit) ->
  ets:match(person, #person{name = '_', age = Age}, Limit).

请注意,这种方式将扫描整个表以匹配所需的数据,直到指定的限制。这个官方document 可能对它的效率有用。

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 2023-03-30
    • 2020-04-10
    • 1970-01-01
    • 2021-08-04
    • 2012-05-31
    • 2012-11-27
    • 2017-11-21
    • 2012-08-03
    相关资源
    最近更新 更多