What good resources exist for understanding database tuning on the major engines and advancing your knowledge in that area?

The idea of this question is to collect the shed load of resources that invariably exist, so that people can have a "one stop" knowledge shop of the good, peer approved resources.

General SQL

PostgreSQL (wiki) (PGsearch)



MS SQL Server

Sybase SQL Anywhere


+1  A: 

SO has a good one here: How do you interpret a query’s explain plan?

Gavin Miller
+11  A: 

This guy's answer to a not-the-same-inquiry is probably a good start.

+1  A: 

If you are looking for SQL Server specific Performance tuning references there are an absolute shed load of quality resources available online, ranging from white papers on implementing specific technologies such as partitioning, to excellent Blogs that detail step by step instruction on how to performance tune a sql server platform.

Shameless plug follows: You can start you research by reviewing the performance tuning area of my personal Blog, or for any specific SQL Server requirements/issues feel free to fire me an email.

SQL Server Resources

John Sansom
+3  A: 

For MySQL, the performance tuning 'bible' is High Performance MySQL

+1  A: 

"SQL Performance Tuning" covers most of the major DBMS -- how to write high performing cross platform SQL queries, etc.

Matt Rogish
+7  A: 

And something for PostgreSQL: "Performance Optimization" at the official wiki.

Milen A. Radev
+1  A: 

SQL Server Performance Decent site for MSSQL specific info.

+1  A: 

A lot of good MySQL specific tips can be found at

+1  A: 

Xaprb is a must-read blog for MySQL DBAs. The author has written a book on high-performance MySQL

For the happy few working with Sybase SQL Anywhere I can only recommend Breck Carter's blog and his SQL Anywhere Studio 9 Developer's Guide

Vincent Buck
+2  A: 

Quick PostgreSQL Optimization (query optimizing)

Short read, explains a lot of things well and 'works' a real example which is nice for those of us that learn better that way.

After seeing the wiki link to PostgreSQL, figured I'd edit this post with links for mysql/oracle docs, not really an optimization guides specifically but both are good resources, especially the mysql one. For optimization and any other tuning features.

+1  A: 

Here is another highly-regarded book that is platform-neutral:

Dan Tow's SQL Tuning: Generating Optimal Execution Plans

Contains some specific examples for Oracle, MS SQL, and IBM DB2, but the techniques involved should apply to other platforms, too.

+4  A: 

If you are using an Oracle database, this guide may also help.

+1  A: 

For SQL Server, I primarily use:

+11  A: 

Oracle's very own Tom Kyte has a fantastic repository on every type of performance problem imaginable on He usually takes the time to recreate specific problems and gives very detailed explanations.

Neil Kodner
+1 In any domain there's usually a shining star of wisdom. You're lucky if you can find one. For Oracle, that person is Tom Kyte.
+2  A: 

I would add that besides having your database theoretically tuned, you should profile your application using a profiler that tracks SQL calls.

Despite your best intentions, a few bad calls will sneak into your application and will often cause 90% of your performance-related problems.

Nathan Voxland
+1  A: 
  • Book: Troubleshooting Oracle Performance (Antognini Christian)

For people working with Oracle I recommend this link.............

From my experiences with Oracle database development, I have found that building up a knowledge of how to use SQL, how it works and knowing what is available (supplied functions, clauses that you didn't know existed or enhanced from the last version) means I spend a lot less time having to tune sql.


The whole Performance Tips chapter in the PostgreSQL docs is worth reading.

Stephen Denne

I'd start out by understanding how the database works at a fundamental level. How is data stored on disk, what does creating an index do, how does query plan optimization work, how are plans cached, when to cached plans expire.

If you can commit all that to memory, most of the advice about tuning seems obvious.

Here's a great book for MSSQL

SQL Server Internals

+1  A: 

I was pretty happy when I saw this way of quickly seeing what happened with a SQL statement you are tuning under Oracle. Change the first SQL statement below to your SELECT statement and keep that hint in there.


SELECT * FROM TABLE(dbms_xplan.display_cursor( NULL, NULL, 'RUNSTATS_LAST'))

SQL_ID  5z36y0tq909a8, child number 0

Plan hash value: 272002086

| Id  | Operation         | Name | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  |
|   1 |  TABLE ACCESS FULL| DUAL |      1 |      1 |      1 |00:00:00.02 |       3 |      2 |

12 rows selected.


  • E-Rows is estimated rows.
  • A-Rows is actual rows.
  • A-Time is actual time.
  • Buffers is actual buffers.

Where the estimated plan varies from the actual execution by orders of magnitude, you know you have problems.

+1  A: 

How to Identify Slow Running Queries with SQL Profiler is a good tutorial on how to go about identifying slow running queries. This will allow one to focus their attention where it is most needed.

Gavin Miller

Another good link that i would like to share is : Tips for improving and tuning sql server database


For Oracle, Cost-Based Oracle: Fundamentals by Jonathan Lewis.

Tony Andrews