Проверил на большом объеме, с тем же распределением что и на проде (прям взять дамп с прода нет возможности)
после указания { url: {$exists: true} } все стало +- ожидаемо эффективно
> db.pi_with_url.count()
5000000
> db.pi_with_url.count({createdAt: { $gte: 1671518585 }, url: {$exists: true}});
100040 // с возрастом до одного года
> db.pi_with_url.count({createdAt: { $lt: 1671518585 }, url: {$exists: true}});
4899960 // старые, старше года
explain
через время url у большинства документов будет удалено, останутся только "свежие" документы
explain без url на старых документах (для которых createdAt < 1671518585)
добавилось условие у FETCH url: {$exists: true}, как и писал выше, кажется не логичным ведь в индексе итак только такие ссылки на документы
но не страшно, прочел все про индексы в MongoDB: The definitive guide, но там про такое поведение partial индекса не былоо
может кто посоветует материал как оно под капотом работает?