0

我计划使用 NoSQL 云服务作为我们的数据存储。我对 MAP 数据类型有疑问。假设我有一列“标签”( labels MAP(RECORD(value STRING, contentType STRING))在表“myTable”中,其中“标签”列是 MAP 数据类型,值是记录数据类型。

我想查询返回“标签”的键=特定值的所有行的表,sql语句是什么样的?我试过:

select * from myTable where labels.keys($key=‘xxxx’)

这是行不通的。

我们需要为 MAP 中的标签字段添加索引吗?任何性能改进?如果是,如何添加这个索引?

谢谢

4

1 回答 1

0

请尝试以下语法

select * from myTable t 
where t.labels.keys() =any "xxx"

如果您添加存在,您的语法很好

select * from myTable  t 
where exists t.labels.keys($key= “xxx”)

关于你关于性能的问题

会有显着的性能提升。如果您只想索引地图的字段名称(键),您可以像这样创建索引:

create index idx_keys on myTable(labels.keys())

如果要同时索引它们的键和关联的值:

create index idx_keys_values 
on myTable(labels.keys(), labels.values())
于 2021-06-10T09:22:56.933 回答