| Preface | p. xi |
| Acknowledgments | p. xiii |
| Introducing Performance Tuning and Physical Database Design | p. 1 |
| What is performance tuning? | p. 1 |
| The physical database design process | p. 3 |
| Where to next? | p. 10 |
| SQL Server Storage Structures | p. 11 |
| Introduction | p. 11 |
| Databases and files | p. 11 |
| Creating databases | p. 14 |
| Increasing the size of a database | p. 19 |
| Decreasing the size of a database | p. 21 |
| Modifying filegroup properties | p. 26 |
| Setting database options | p. 27 |
| Displaying information about databases | p. 30 |
| System tables used in database configuration | p. 32 |
| Units of storage | p. 35 |
| Database pages | p. 37 |
| Looking into database pages | p. 42 |
| Pages for space management | p. 45 |
| The BankingDB database | p. 49 |
| Indexing | p. 51 |
| Introduction | p. 51 |
| Data retrieval with no indexes | p. 51 |
| Clustered indexes | p. 52 |
| Nonclustered indexes | p. 57 |
| The role of indexes in insertion and deletion | p. 59 |
| A note about updates | p. 69 |
| So how do you create indexes? | p. 70 |
| Dropping and renaming indexes | p. 84 |
| Displaying information about indexes | p. 84 |
| Creating indexes on views | p. 95 |
| Creating indexes with computed columns | p. 97 |
| Using indexes to retrieve data | p. 98 |
| Choosing indexes | p. 110 |
| The Query Optimizer | p. 119 |
| Introduction | p. 119 |
| When is the query optimized? | p. 120 |
| Query optimization | p. 121 |
| SQL Server 2000 and Windows 2000 | p. 227 |
| SQL Server 2000 and CPU | p. 227 |
| SQL Server 2000 and memory | p. 243 |
| SQL Server 2000 and disk I/O | p. 257 |
| Transactions and Locking | p. 275 |
| Introduction | p. 275 |
| Why a locking protocol? | p. 276 |
| The SQL server locking protocol | p. 278 |
| SQL Server locking in action | p. 314 |
| Uncommitted data, repeatable reads, phantoms, and more | p. 319 |
| Application resource locks | p. 327 |
| A summary of lock compatibility | p. 327 |
| Monitoring Performance | p. 329 |
| Introduction | p. 329 |
| System stored procedures | p. 329 |
| System monitor, performance logs, and alerts | p. 331 |
| The SQL Profiler | p. 335 |
| Index Tuning wizard | p. 349 |
| Query analyzer | p. 358 |
| A Performance Tuning Checklist | p. 361 |
| System resource use | p. 361 |
| Choosing efficient indexes | p. 362 |
| Helping the Query Optimizer | p. 364 |
| Avoiding lock contention | p. 364 |
| Database integrity | p. 367 |
| Database administration activities | p. 367 |
| Archiving data | p. 368 |
| Read only report databases | p. 368 |
| Denormalization | p. 369 |
| Bibliography | p. 371 |
| Index | p. 373 |
| Database Technologies | p. 391 |
| Table of Contents provided by Syndetics. All Rights Reserved. |