通过多个索引获取记录

Fetch records by multiple indexes

通过两个索引获取所有记录的最有效方法是什么? 假设我们有两个二级索引,end_block_numpublic_key 以及以下值:

  1. end_block_num = 1000
  2. public_key = "AABBCC"

我已经尝试了两个不同的查询(我认为第二个更有效)但这是最佳方法吗??

agents = (
    r.table("agents")
    .filter(
        reduce(
            operator.or_,
            [r.row["end_block_num"].eq(1000), r.row["public_ket"].eq("AABBCC")],
            False,
        )
    )
    .run(conn)
)

agents = (
    r.table("agents")
    .get_all(1000, index="end_block_num")
    .coerce_to("array")
    .set_union(r.table("agents").get_all("AABBCC", index="public_key").coerce_to("array"))
    .run(conn)
)

我想到了多索引解决方案:

r.db(name).table("agents").index_create(
     "my_multi_index",
     lambda agent: [
         agent["public_key"], agent["end_block_num"],
     ],
     multi=True,
 ).run(conn)

执行:

agents = (
     r.table("agents")
    .get_all(["AABBCC", 1000], index="my_multi_index")
    .run(conn)
)