Я создал составной индекс для моей корзины заказов, используя этот запрос:
CREATE INDEX idx_customer ON `order` (
buyer.contact.firstName,
buyer.contact.lastName,
ALL DISTINCT ARRAY aoc.`value` FOR aoc IN buyer.contact.communicationChannel
WHEN aoc.`communicationChannelCode`= "EMAIL" END)
WHERE _class = "com.lbk.entities.OrderEntity"
Когда я выполняю поиск customer.contact.firstName, запрос совпадает с индексом, но не выполняется для customer.contact.lastName.
В основном это соответствует первому полю в запросе.
Вот результат объяснения для ошибочного поля (customer.contact.lastName):
{
"plan": {
"#operator": "Sequence",
"~children": [
{
"#operator": "PrimaryScan3",
"index": "#primary",
"index_projection": {
"primary_key": true
},
"keyspace": "order",
"namespace": "default",
"using": "gsi"
},
{
"#operator": "Fetch",
"keyspace": "order",
"namespace": "default"
},
{
"#operator": "Parallel",
"~child": {
"#operator": "Sequence",
"~children": [
{
"#operator": "Filter",
"condition": "(((((`order`.`buyer`).`contact`).`lastName`) = \"jj\") and ((`order`.`_class`) = \"com.lbk.entities.OrderEntity\"))"
},
{
"#operator": "InitialProject",
"result_terms": [
{
"expr": "(((`order`.`buyer`).`contact`).`lastName`)"
}
]
},
{
"#operator": "FinalProject"
}
]
}
}
]
},
"text": "SELECT buyer.contact.lastName FROM `order` where buyer.contact.lastName = 'jj'\nAND (`_class` = \"com.lbk.entities.OrderEntity\")"
}
Enterprise Edition 5.5.1 сборка 3511