Dans mongo dbMongoDB Trouver() FullScan avec Index
> show dbs
admin (empty)
data 23.9423828125GB
local (empty)
J'ai une table avec un index:
> db.XXX.count();
80089670
C#:
voteCol.EnsureIndex("({ YYY:1 })");
Quand je fais une requête avec le pilote C#:
MongoCollection<BsonDocument> voteCol = database.GetCollection<BsonDocument>("XXX");
var query = new QueryDocument("YYY", DataUtils.getItemInPollIdList());
MongoCursor<BsonDocument> cursor = voteCol.Find(query).SetSortOrder(SortBy.Descending("ZZZ")).SetLimit(10).SetSkip(20);
Le temps d'exécution de cette partie du code est proche de 0.
Puis, quand je suis en train d'obtenir la taille du curseur
cursor.Size();
Je reçois un délai d'attente.
Impossible de lire les données de la connexion de transport: Une connexion tentative a échoué car le parti connecté n'a pas répondu correctement après une période de temps, ou une connexion établie a échoué car hôte connecté n'a pas répondu.
Dans Mongo log
Lun 22 août 10:08:50 [conn9] requête data.XXX ntoreturn: 1 reslen: 36 nscanned: 80089670 {YYY: "1482092"} nreturned: 0 48935ms
Qu'est-ce que c'est? Lorsque la requête est vraiment exécutée? Pourquoi je ne peux pas obtenir les résultats?
Edit 1: nouvel indice Ajouté
Lun 22 août 10:17:38 [conn12] la construction de nouveaux index sur {({YYY: -1}): 1} pour data.XXX
4000000/80089670 4% 7866400/80089670 9% 11403000/80089670 14% 15000000/80089670 18% 19000000/80089670 23% 22988600/80089670 28% 26454700/80089670 33% 30000000/80089670 37% 33438600/80089670 41% 37000000/80089670 46% 40810600/80089670 50% 44132200/80089670 55% 48000000/80089670 59% 52000000/80089670 64% 55618300/80089670 69% 59000000/80089670 73% 62170100/80089670 77% 66000000/80089670 82% 70000000/80089670 87% 74000000/80089670 92% 77874500/80089670 97%
même avec le nouvel indice - même numéro: shell mongo:
> printjson(db.XXX.findOne({YYY:"1517077"}));
MongoLog
Mon Aug 22 10:33:40 [conn4] query data.XXX ntoreturn:1 reslen:36 nscanned:80089670 { YYY: "1517077" } nreturned:0 48751ms
Il a scanné 80 millions de documents, cela prend beaucoup de temps) –
@Hohhi Pourquoi? J'ai ajouté un index. Pouvez-vous expliquer l'analyse complète? – JohnJohnGa
c'est ce qu'il a écrit dans le journal: nscanné: 80089670 –