Editor's top MySQL books
3Learning MySQL
Vinicius Grippa & Sergey Kuzmichev · O'Reilly · 632 pages · ~16 hrs to read
The most approachable complete MySQL book — covers installation, SQL basics, schema design, indexing, replication, and backup. The right starting point for developers new to MySQL.
High Performance MySQL, 4th Edition
Silvia Botros & Jeremy Tinley · O'Reilly · 61 pages · ~2 hrs to read
The definitive guide to MySQL performance — query optimisation, indexing strategies, schema design, replication architecture, and InnoDB internals. Required reading for any engineer running MySQL at scale.
SQL Antipatterns, Volume 1
Bill Karwin · Pragmatic Bookshelf · 529 pages · ~13 hrs to read
Not MySQL-specific, but the most useful schema-design book a MySQL developer will read — it catalogs the exact mistakes (EAV tables, comma-separated lists, naive tree structures) that show up constantly in real MySQL codebases and explains the fix for each.
MySQL Books for Beginners
3Learning MySQL
Vinicius Grippa & Sergey Kuzmichev · O'Reilly · 632 pages · ~16 hrs to read
The most approachable complete MySQL book — covers installation, SQL basics, schema design, indexing, replication, and backup. The right starting point for developers new to MySQL.
MySQL Crash Course
Rick Silva · No Starch Press · 359 pages · ~9 hrs to read
A hands-on, project-based introduction that has readers building and querying a working schema within the first chapters rather than reading theory. Good fit for self-taught developers who learn by typing statements and seeing immediate results, including a section on calling MySQL from PHP, Python, and Java.
Murach's MySQL, 3rd Edition
Joel Murach · Mike Murach & Associates0
Murach's signature "paired pages" format — reference on the left, worked examples on the right — makes this one of the more approachable teach-yourself options, covering EER modeling in MySQL Workbench through stored procedures and triggers.
Intermediate & Advanced MySQL Books
7High Performance MySQL, 4th Edition
Silvia Botros & Jeremy Tinley · O'Reilly · 61 pages · ~2 hrs to read
The definitive guide to MySQL performance — query optimisation, indexing strategies, schema design, replication architecture, and InnoDB internals. Required reading for any engineer running MySQL at scale.
MySQL 8 Cookbook
Karthik Appigatla · Packt · 446 pages · ~11 hrs to read
Over 150 recipes covering MySQL 8 features — JSON operations, window functions, CTEs, group replication, and performance schema. Practical reference for developers upgrading from older MySQL versions.
MySQL Cookbook, 3rd Edition
Paul DuBois · O'Reilly
Written by one of the primary contributors to the official MySQL Reference Manual, this recipe-format book solves specific real-world problems — date handling, data validation, import/export — rather than teaching MySQL end-to-end. A strong companion once you already know the basics and need a specific answer fast.
SQL Antipatterns, Volume 1
Bill Karwin · Pragmatic Bookshelf · 529 pages · ~13 hrs to read
Not MySQL-specific, but the most useful schema-design book a MySQL developer will read — it catalogs the exact mistakes (EAV tables, comma-separated lists, naive tree structures) that show up constantly in real MySQL codebases and explains the fix for each.
MySQL in a Nutshell
Russell J. T. Dyer · O'Reilly · 364 pages · ~9 hrs to read
A dense desktop reference to MySQL statement syntax, functions, and command-line utility options rather than a teaching text. Useful to keep on the shelf once you're past the fundamentals and just need exact function syntax fast.
MySQL 8 Query Performance Tuning
Jesper Wisborg Krogh · Apress · 974 pages · ~24 hrs to read
Written by a member of Oracle's MySQL Support team, this is the most systematic treatment of query tuning specifically — EXPLAIN, EXPLAIN ANALYZE, the Performance Schema, and a repeatable process for finding and fixing slow queries.
SQL Performance Explained
Markus Winand · self-published · 196 pages · ~5 hrs to read
A short, focused book on indexing and how the database actually executes a WHERE clause, written to be database-agnostic but directly applicable to MySQL's InnoDB engine. The clearest explanation available of why an index does or doesn't get used.
MySQL resources