【发布时间】:2020-11-24 13:11:36
【问题描述】:
我在联系人存储桶中有一个格式如下的“组织”类型的 couchbase 文档。
"contact": {
"extendedData": [],
"id": "organization_2_1094",
"organizationId": 1094,
"organizationName": "SMART COMSSS",
"organizationRoles": [
{
"addressAssociations": [
{
"activeDate": "2019-08-08T03:51:51.417Z",
"addressAssocTypeId": -2,
"addressId": 749,
"ownershipStatus": 1,
"srvAddressStatus": 1
}
],
"extendedData": [
{
"characteristicId": "1",
"characteristicValue": "Plant_Id",
"extendedDataId": "400"
},
{
"characteristicId": "2",
"characteristicValue": "Plant_Type",
"extendedDataId": "401"
}
],
"name": "Store1",
"organizationRoleId": 928,
"roleSpecId": -103,
"statusId": 1,
"statusLastChangedDate": "2019-08-22T12:27:51.077Z"
},
{
"name": "changed",
"organizationRoleId": 929,
"roleSpecId": -104,
"statusId": 1,
"statusLastChangedDate": "2019-08-22T12:27:51.077Z"
},
{
"addressAssociations": [
{
"activeDate": "2019-08-08T23:06:49.748Z",
"addressAssocTypeId": -2,
"addressId": 752,
"ownershipStatus": 1,
"srvAddressStatus": 1
}
],
"extendedData": [
{
"characteristicId": "1",
"characteristicValue": "Plant_Id",
"extendedDataId": "402"
},
{
"characteristicId": "2",
"characteristicValue": "Plant_Type",
"extendedDataId": "403"
}
],
"name": "store11",
"organizationRoleId": 930,
"partyRoleAssocs": [
{
"partyRoleAssocId": "531"
}
],
"relevantEntityId": "S_103",
"roleSpecId": -103,
"statusId": 1,
"statusLastChangedDate": "2019-08-22T12:27:51.077Z"
},
{
"name": "new store group",
"organizationRoleId": 931,
"partyRoleAssocs": [
{
"partyRoleAssocId": "532"
}
],
"roleSpecId": -103,
"statusId": 1,
"statusLastChangedDate": "2019-08-22T12:27:51.077Z"
},
{
"name": "child store",
"organizationRoleId": 932,
"partyRoleAssocs": [
{
"partyRoleAssocId": "533"
}
],
"roleSpecId": -103,
"statusId": 1,
"statusLastChangedDate": "2019-08-22T12:27:51.077Z"
},
{
"name": "MCOTEST",
"organizationRoleId": 933,
"roleSpecId": -104,
"statusId": 1,
"statusLastChangedDate": "2019-08-22T12:27:51.077Z"
},
{
"name": "new store child",
"organizationRoleId": 934,
"partyRoleAssocs": [
{
"partyRoleAssocId": "534"
}
],
"roleSpecId": -103,
"statusId": 1,
"statusLastChangedDate": "2019-08-22T12:27:51.077Z"
},
{
"name": "new store child",
"organizationRoleId": 935,
"partyRoleAssocs": [
{
"partyRoleAssocId": "535"
},
{
"partyRoleAssocId": "565",
"toRoleId": 936
}
],
"roleSpecId": -103,
"statusId": 1,
"statusLastChangedDate": "2019-08-22T12:27:51.077Z"
},
{
"organizationRoleId": 936,
"partyRoleAssocs": [
{
"toRoleId": 935
}
],
"statusId": 1,
"statusLastChangedDate": "2019-08-22T12:27:51.077Z"
}
],
"statusId": 1,
"statusLastChangedDate": "2019-08-22T09:27:51.072Z",
"tenantId": "2",
"type": "organization"
}
以及存储桶联系人中的另一个“地址”类型的沙发基础文档
{
"contact": {
"address1": "stret",
"addressId": "1000",
"city": "miryalguda",
"countryCode": 4,
"id": "address_2_1000",
"state": "ap",
"tenantId": "2",
"type": "address",
"zip": "500070"
}
}
现在,我已根据我的要求通过在 addressId 上加入文档来查询组织文档中的一些数据和地址文档中的一些数据。以下是查询:
SELECT orgrole.name, orgrole.organizationRoleId,orgrole.externalIds as externalIds,orgrole.roleSpecId,a.city as city, a.zip as zip,{a.addressId,a.address1,a.address2,a.address3,a.country,a.city, a.zip,a.state,a.postalCode,a.houseNumber,a.streetName,a.fxGeocode,a.isActive} as address FROM `optima_contact` AS contact UNNEST contact.organizationRoles AS orgrole UNNEST orgrole.addressAssociations AS aa JOIN `optima_contact` AS a ON aa.addressId = TO_NUMBER(a.addressId)
WHERE contact.type = "organization" AND a.type = "address"
我已经为连接的右侧创建了一个索引。
CREATE INDEX `ix2` ON `optima_contact`(`addressId`,`address1`,`address2`,`address3`,`country`,`city`,`zip`,`state`,`postalCode`,`houseNumber`,`streetName`,`fxGeocode`,`isActive`) WHERE (`type` = "address")
还有什么办法可以提高查询的执行时间吗? 由于类型组织的文档数量为 10,并且类型“地址”的文档数量超过 70000,我在查询执行时超时
【问题讨论】: