Errata


Print Print Icon

Submit your own errata for this product.


The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.


Color Key: Serious Technical Mistake Minor Technical Mistake Language or formatting error Typo Question



Version Location Description Submitted By
Printed Page 27
2nd bullet point

You state "Keep in mind, though, that whichever alternative you test first will have an unfair disadvantage ... since the second experiment will find blocks cached by the first experiment." You then describe running the tests separated by a period of time in the hopes that blocks fall out of the cache.

What I have found useful in my own tuning exercises is to force the database server to flush its cache prior to execution. In Microsoft SQL Server, this is done with the commands "DBCC DROPCLEANBUFFERS" and "DBCC FREEPROCCACHE".

However, you need sysadmin privileges to do this, and is best done on a test system where flushing the cache won't have unfortunate side effects to performance on a production environment.

On a system where you are not a sysadmin and/or where testing MUST occur on a production system, your method is perfectly acceptable -- it is simply more time consuming.

Peter Kristolaitis 
Printed Page 34
second last paragraph

The statement

SELECT SUM(COUNT(Area_Code)*COUNT(Area_Code))/
(SUM(COUNT(Area_Code))*SUM(COUNT(*)))
FROM CUSTOMERS GROUP BY Area_Code;

is not valid in Microsoft SQL Server. It will fail with message

Cannot perform an aggregate function on an expression containing an aggregate or a subquery.

Anonymous 
Printed Page 76
points near bottom of page

"1. Drive into Orders ..."
should be
"1. Drive into Order_Details ...

Anonymous 
Printed Page 116
2nd Paragraph

I have been reading the book SQL Tuning by Dan Tow on safaribooksonline.com.

Looks like the edition you have on that website has mistakes. For example whilst going through your book I came across the following in section 5.2.

"Using an index on the filter for E, the database must begin by touching 0.1 / C rows in the driving table E."

If C is the total number of rows in the employee table and we are applying "E.Exempt_Flag='Y'" filter on it.

Shouldn't the number of rows being touched in the table E be 0.1 * C?

Anonymous 
Printed Page 123
Q1

When executing the SQL statement in Q1, I receive the following error:

Msg 130, Level 15, State 1, Line 1
Cannot perform an aggregate function on an expression containing an aggregate or a subquery.

I have received this error in both SQL 2000 and SQL 2005 environments.

Anonymous 
Printed Page 125
4th bullet point

'Instead, you just need the percentage of rows that have a null foreign key and the two table counts.'
should read:
'Instead, you just need the percentage of rows that have a nonnull foreign key and the two table counts.'

Anonymous