The most common performance complaint we hear: "The application was fast when we launched, but now it's getting slower every month." In 90% of cases, the culprit is database design — not the application code.
Mistake #1: Missing indexes on columns used in WHERE clauses and JOINs. A table with 1 million rows and no index on the search column takes 500ms per query. Add the index, and it drops to 2ms. This is the single highest-impact optimization available.
Mistake #2: N+1 queries — loading a list of items, then making a separate database query for each item's related data. If you display 50 orders with customer names, that's 51 queries instead of 2 (with a proper JOIN). ORMs make this easy to miss because the code looks clean while the database melts.
Mistake #3: Choosing NoSQL when relational data is relational. MongoDB is excellent for document storage and flexible schemas. It's terrible for data that has relationships, needs transactions, or requires complex reporting. If you find yourself using $lookup extensively, you probably need PostgreSQL.
Mistake #4: Not planning for data growth. A query that runs in 10ms on 10,000 rows might take 3 seconds on 10 million rows if the execution plan changes. Test with production-scale data volumes during development, not after launch.