|The Guru's Guide to Transact-SQL / Ken Henderson|
|Reviewed by Tal Cohen||Sunday, 04 June 2000|
You might be wondering what’s wrong with that. Well, I’ve read quite a few contemporary computing books in my life: books about specific products and technologies that are normally outdated by the time a new version is released. But the quality of these books in general had rapidly decreased over the past few years, with publishers apparently believing that readers pay for their books by the weight. Most technology- or product-specific books today are hefty tomes, often over 1,000 pages thick. And their content can be summarized to one fifth of that; less, if you remove the obvious parts. They seem to use every possible trick just to make the book thicker -- long printouts of programs and their output, a screenshot or two of every meaningless dialog box in the product, wide margins -- you name it.
And normally, if you’re even mildly familiar with the product, there’s very little you can learn from these books in the first place. Finding meaningful, new information in there is like finding a needle in a stack of needles: hard, and painful to boot.
Ken Henderson’s book, published in early 2000, seems like an outstanding exception. I can only hope it will set a new standard for such technology books. The book is concise, well-written, and information-packed. And you'll have to look hard to find a screenshot.
The Guru’s Guide to Transact-SQL does not assume any prior knowledge in SQL; it covers everything from the ground up. However, I would hardly recommend it to beginners with no previous familiarity with the SQL language. Joe Celko is quoted at the beginning of the first chapter, saying that “the single biggest challenge to learning SQL programming is unlearning procedural programming”. That’s a very truthful statement, and the Guru’s Guide’s introductory chapter seems insufficient for that. But if you are at least somewhat familiar with the language, and if you work with Transact-SQL, this is a book you should read, and keep a copy at hand for future reference. (BTW, the quotes at the beginning of each chapter are all very-well chosen and fun to read. Even if the book isn't for you, visit a brick-and-mortar bookstore that carries it and go over these.)
Henderson’s writing is clear but dense; he writes directly to the point, without much foreplay. And he does not waste your time (and shelf space) on information that you can easily find elsewhere. For example, the chapters on DDL (the Data Definition Language) and the DML (Data Manipulation Language) assume that you can, and will, find the boring nitty-gritty information, when you need it, in the product’s online documentation. Thus, instead of being monsters of 100-pages each, these chapters are both short (about 10 pages each) and very to the point, containing “tips, tricks and techniques that go beyond the [online documentation]”.
The book holds much value even to those who do not use Microsoft’s SQL; while reading it, I’ve picked up more than one useful point that can be very helpful with other SQL variants. Much of the information in the chapter on performance-tuning, for example, is worthwhile advice for any SQL database user. But naturally, the book is much more valuable to those who do use Tranasct-SQL. The aforementioned chapter on optimization alone, even though it is the only chapter that does contain screenshots, is probably worth the price of the whole book for T-SQL users. Other highly informative chapters includes the ones on gathering statistics about your data, the chapter on SELECT, the one about full-text searching, and more. Most interesting, though, are the last two chapters (20 and 21), titled “Undocumented T-SQL” and “Potpourri”. It still amazes me that, after all those years, Microsoft had not learned to avoid undocumented features. Somebody will find them, and when they do, it’s nothing but bad press. Some of the undocumented T-SQL features presented by Henderson appear in sources other than the product’s online books, including in some cases books published by Microsoft. Others, however, are published nowhere. Some of these undocumented features can give you a performance edge, some can provide useful functionality (ENCRYPT, PWDENCRYPT, etc.) while others are hardly of interest (TSEQUAL, for example, which dates back to T-SQL’s origin as an OS/2 port of the Sybase SQL Server).
Having read the book, I’ve reached two main conclusions. One, Microsoft SQL Server is now on the same playground as the “big boys” in the database world (IBM DB/2 and Oracle, mainly). I’m not sure it’s the product I'd use, though, if only because it’s available only on a single platform. And two, if you do use MS SQL Server, you'd really want to read this book, (almost) cover-to-cover.