indexBasedCE: cardinality estimates for inequality are equal to the collection size

XMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Done
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Query Optimization
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Inequalities always appear to be estimated as if all documents match.

      To reproduce:

      db.foo.drop();
      docs = [];
      for (let i = 1; i <= 100000; i++) {
      	docs.push({a:i % 2});
      }
      
      db.foo.insertMany(docs);
      db.foo.createIndex({a:1});
      db.foo.find({"a":{"$ne":1}}).count();
      db.foo.find({"a":{"$ne":1}}).explain().queryPlanner.winningPlan.cardinalityEstimate;
      

      returns:

      Enterprise test> db.foo.find({"a":{"$ne":1}}).count();
      50000
      Enterprise test> db.foo.find({"a":{"$ne":1}}).explain().queryPlanner.winningPlan.cardinalityEstimate;
      100000
      

            Assignee:
            Hana Pearlman
            Reporter:
            Philip Stoev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: