Skip to content

[PERFORMANCE] Missing database index on user lookup fields causes full collection scans #365

Description

@anshul23102

Performance Issue: No Index on Email/Username Lookup Fields

Description

User lookup queries (login, profile fetch, session validation) perform full collection/table scans because the email and username fields lack database indexes. With a growing user base, this causes response time degradation on every authenticated request.

Steps to Reproduce

  1. Insert 10,000+ user records into the database
  2. Enable query explain/analyze (MongoDB: db.users.find({email: 'x'}).explain("executionStats"))
  3. Observe: COLLSCAN (full collection scan) instead of IXSCAN (index scan)
  4. Execution time scales linearly with user count

Root Cause

The user model/schema does not define indexes on frequently queried fields.

Impact

  • Login response time of 100ms+ per query at scale
  • Every page requiring authentication triggers at least one user lookup
  • Database becomes the bottleneck under moderate traffic

Proposed Fix

Add unique indexes to the user model:

// Mongoose schema
const userSchema = new Schema({
  email: { type: String, required: true, unique: true, index: true },
  username: { type: String, required: true, unique: true, index: true },
  // ...
});

The unique: true constraint also implicitly creates an index. For compound queries, add a compound index.

I would like to implement this and add a migration script if assigned.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions