gpt4 book ai didi

azure-storage - 是否可以使用特定搜索参数但没有 PartitionKey 来查询大 Azure 表?

转载 作者:行者123 更新时间:2023-12-04 05:31:13 27 4
gpt4 key购买 nike

假设我有一个表实体:

分区键
行键

用户名
创建日期

让我们进行一个很好的查询,使用它我可以检索具有特定 ID(用作 PartitionKey)的所有条目

Dim azt_query As CloudTableQuery(Of adlog)
azt_query = azt_context.CreateQuery(Of adlog)("adlog").Where(Function(e) (e.PartitionKey = "myid" And e.table = "mytable" And e.userid = "myuserid" And e.datecreated >= dateStart And e.datecreated <= dateEnd)).AsTableServiceQuery()

现在我想在不知道 PartitionKey 而是基于 USERID 的情况下查询表

它会是这样的:
Dim azt_query As CloudTableQuery(Of adlog)
azt_query = azt_context.CreateQuery(Of adlog)("adlog").Where(Function(e) (e.table = "mytable" And e.userid = "myuserid" And e.datecreated >= dateStart And e.datecreated <= dateEnd)).AsTableServiceQuery()

但是删除 e.PartitionKey = "myid"现在需要永远。我认为查询想要检索表的所有行并使用参数在其中进行搜索。

但是有数百万行。使用分区键查询实际上非常快。

有没有办法查询这个?
我可以检索特定 USERID 的所有行,还是我被困在分区键级别?

最佳答案

您可以通过这种方式查询表,但正如您所注意到的,这不是一个好主意。如果没有 PartitionKey,存储服务器正在做您所怀疑的事情:它正在读取表中的每个实体。在 Azure Tables 中,称为“表扫描”,速度非常慢。

解决这个问题的唯一方法是在查询中包含 PartitionKey。如果您需要经常执行这样的查询,您可能会考虑使用 PartitonKey/RowKey 方案保留一个单独的表,这将使该查询更快,或者使用具有适当索引的 SQL 数据库。

关于azure-storage - 是否可以使用特定搜索参数但没有 PartitionKey 来查询大 Azure 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com