Запрос Trino на MongoDB не использует индексы
Запрос данных монго из Trino приводит к сканированию коллекции вместо сканирования индекса. Пожалуйста, предложите.
Например, допустим, у нас есть ниже json в монго
{
"_id": "b4dc8c1d-feb0-41ad-826b-55de1826d63f",
"event": {
"status": "create",
"header": {
"direction": "DISTRIBUTION",
"receiver": {
"address": "street 1"
},
"transferReference": "123"
}
},
"extractedFields": [
{
"field1": [
"value1"
],
"field2": [
"value2"
]
}
],
"domainMetaData": {
"receivedTime": {
"$date": {
"$numberLong": "1666571260554"
}
}
}
"statusDate": "2022-08-22T17:19:21.999"
}
select * from schema.database.table where event.header.transferReference = '123'
Поле «genericEvent.header.transferReference» индексируется в Mongo. Объяснение плана показывает, что фильтр переносится на монго, но вся коллекция сканируется.
ScanFilter[table = schema.database.table, grouped = false, filterPredicate = ("genericevent"[2][3] = VARCHAR '123')]
SELECT * FROM schema.database.tablewhere where statusDate = timestamp '2022-08-22 17:19:21.999'
Поле statusDate индексируется в Mongo. Объяснение плана показывает, что фильтр переносится на монго, но вся коллекция сканируется.
SELECT * FROM schema.database.tablewhere where _id = 'b4dc8c1d-feb0-41ad-826b-55de1826d63f'
SQL-запрос выше работает нормально. Используется индекс и загружается только одна запись.
1 ответ
Сканирование индекса не поддерживается коннектором MongoDB . Это улучшение производительности, которое можно было бы добавить, но в настоящее время оно отсутствует.