通过多个索引获取记录
Fetch records by multiple indexes
通过两个索引获取所有记录的最有效方法是什么?
假设我们有两个二级索引,end_block_num
和 public_key
以及以下值:
end_block_num = 1000
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)
)
通过两个索引获取所有记录的最有效方法是什么?
假设我们有两个二级索引,end_block_num
和 public_key
以及以下值:
end_block_num = 1000
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)
)