Back to Blog

PostgreSQL vs MySQL: When I Reach for Each

#sql#postgresql#mysql
PostgreSQL vs MySQL: When I Reach for Each

I get asked often, “PostgreSQL or MySQL?” The honest answer: both are solid, and my choice usually depends on the specific project’s needs, not blind preference.

I reach for PostgreSQL when:

  • I need richer data types (native JSON/JSONB, arrays, custom types)
  • Queries are complex with lots of joins and aggregation
  • I need built-in full-text search without extra tools
  • The project will be deployed on Supabase or a PostgreSQL-native platform

I reach for MySQL when:

  • The target hosting/environment is more familiar or cheaper for MySQL (a lot of shared hosting is still MySQL-first)
  • The team maintaining it is more comfortable with MySQL
  • The needs are straightforward — standard CRUD without complex queries

Performance-wise, both are very mature and the difference is often not significant for most small-to-medium apps — don’t overthink this at the start of a project. What matters more: correct indexing, efficient queries, and sensible schema design, regardless of which engine you use.

If I had to pick one default for a new project with no special constraints, I’d lean PostgreSQL — its data-type flexibility and features (window functions, CTEs, JSONB) make it more “future-proof” for needs that might grow.