[SERVER-41590] Covered query делает FETCH Created: 08/Jun/19 Updated: 10/Jun/19 Resolved: 10/Jun/19 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Index Maintenance |
| Affects Version/s: | 4.0.9, 4.0.10 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Bocharov Vladislav | Assignee: | Unassigned |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | bug | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
ubuntu 16.04 |
||
| Attachments: |
|
||||||||
| Issue Links: |
|
||||||||
| Operating System: | ALL | ||||||||
| Steps To Reproduce: |
|
||||||||
| Participants: | |||||||||
| Description |
|
В документах коллекции есть поле contracts, которое хранит массив объектов, в объекте есть строковое поле signedDate с значениями такого вида "2016-09-23T18:02:00+02:02". Это поле проиндексировано. Запросы с count и $lt (аналогично $gt) используют индекс, stage COUNT_SCAN. Но запрос с одновременнно $gt и $lt использует индекс только с одной стороны, а другую фильтрует на FETCH стадии, из-за чего очень страдает скорость запроса (неприемлимо долго). Почему индекс не использует одновременно две границы? Была версия, что проблема в строке, её значение перенес в новое поле того же массива, в формате ISODate, создал индекс - но работает все точно так же. Отдельно отмечу, что не во всех документах есть массив contracts, хотя в большой части. |
| Comments |
| Comment by Bocharov Vladislav [ 10/Jun/19 ] |
|
I translate it to Eng https://jira.mongodb.org/browse/SERVER-41594 |