Short version: I would definitely buy this book for myself.
This book is quick and to the point and brings a new voice that has the guts to mention "refactoring" and SQL in the same sentence. It is lucidly written, often from a refreshing birds-eye view of the many levels that refactoring can be done. It eschews perusing optimizer plans and instead explains some concepts with spirals, with various influences "pushing" the optimizer in various directions. This is a great working concept that helps one attempt to "think like an optimizer."
Possibly the best part of the book is the schematic representation of SQL queries: black boxes for tables from which data is returned, gray for which filtering conditions apply, white for "glue" tables, dark arrows for joins, dotted arrows for outer joins. It's like Feynman diagrams for databases! It allows one to see and show others inefficiencies pictorially. This is extremely efficient when you are dealing with monstrous queries.
He consistently builds on using basic principles to analyze and refactor SQL, often giving various different refactorings, some which build on each other, while others branch off in different directions. I especially like that there is a chapter named "Testing Framework."
- Timings are for MySQL, Oracle and SQL Server. It would have been nice to have seen at least some mention of Postgres.
- Small typo: On page 129 the GNU Statistical Library is referenced. This should be the GNU Scientific Library, which indeed does have over 60 different types of random number generators. I would know 'cause I hack on the Perl bindings!