[使用具有Object_Pairs的索引(在覆盖查询的情况下-Couchbase)将产生性能开销

问题描述 投票:0回答:1

假设我在Object_pair(values).val.data上创建索引。

我的索引是否将“ values”字段存储为数组(由于object_pair的原因,ID的元素名称和val的元素名称)?

如果是这样,并且如果我的n1ql查询是一个覆盖的查询(通过select子句仅获取Object_pair(values).val.data),是否还会有性能开销? (因为我的印象是,在上述情况下,由于索引已经包含“ values”字段作为数组,因此不会进行实际的object_pair转换,因此避免了开销。仅在这种情况下的未覆盖查询将访问实际文档,并在“ ”字段上完成object_pair转换)。

Couchbase文档:

    "values": {
        "item_1": {
            "data": [{
                    "name": "data_1",
                    "value": "A"
                },
                {
                    "name": "data_2",
                    "value": "XYZ"
                }
            ]
        },
        "item_2": {
            "data": [{
                    "name": "data_1",
                    "value": "123"
                },
                {
                    "name": "data_2",
                    "value": "A23"
                }
            ]
        }
    }
}```

UPDATE:
suppose if we plan to create index on Object_pair(values)[*].val.data & Object_pair(values)[*].name

Index: CREATE INDEX idx01 ON ent_comms_tracking(ARRAY { value.name, value.val.data} FOR value IN object_pairs(values) END)

Query: SELECT ARRAY { value.name, value.val.data} FOR value IN object_pairs(values) END as values_array FROM bucket
couchbase n1ql couchbase-indexing
1个回答
0
投票

您可以粘贴完整的创建索引语句吗?

在OBJECT_PAIRS(values)上创建索引。val.data没有任何索引。

您可以通过创建主索引然后在查询下面运行来检出它:

SELECT OBJECT_PAIRS(`values`).val FROM mybucket

输出为:

[
  {}
]

OBJECT_PAIRS(values)返回值的数组,其中包含对象名称的属性名称和值对-

SELECT OBJECT_PAIRS(`values`) FROM mybucket


[
  {
    "$1": [
      {
        "name": "item_1",
        "val": {
          "data": [
            {
              "name": "data_1",
              "value": "A"
            },
            {
              "name": "data_2",
              "value": "XYZ"
            }
          ]
        }
      },
      {
        "name": "item_2",
        "val": {
          "data": [
            {
              "name": "data_1",
              "value": "123"
            },
            {
              "name": "data_2",
              "value": "A23"
            }
          ]
        }
      }
    ]
  }
]

这是一个数组,因此不直接引用其val

© www.soinside.com 2019 - 2024. All rights reserved.