CopyrightPrefaceYou Don't Know that Your DBMS Is Good …You Know that Even Good Tools Work Better in Skilled Hands …AcknowledgmentsChapter 1. Facilis Descensus AverniThis Subject Is ImportantThe Big EightTest ResultsPortabilityTerminology and ExpectationsGeneralitiesChapter 2. Simple SearchesGeneral TuningSpecific TuningStyle NotesParting ShotsChapter 3. ORDER BYGeneral Sort ConsiderationsCharacter SortsOther OptionsParting ShotsChapter 4. GROUP BYRefresherOptimal GROUP BY ClausesSortingSet Functions and Summary AggregatesParting ShotsChapter 5. JoinsJoin Plan StrategiesAvoid the Join StrategiesThree-Way Joins and BeyondOld Style versus ANSI StyleParting ShotsChapter 6. SubqueriesRefresherJoin versus SubquerySyntax ChoicesParting ShotsChapter 7. ColumnsHow Big Is the Size Factor?CharactersTemporalsNumbersBitsLarge ObjectsNULLsColumn Order Within RowsParting ShotsChapter 8. TablesThe Storage HierarchyHeapsClustersThe Normal FormsViewsParting ShotsChapter 9. IndexesRefresherB-treesTypes of IndexesBitmap IndexesOther Index VariationsIndex Key ValuesParting ShotsChapter 10. ConstraintsNOT NULLCHECKFOREIGN KEYPRIMARY KEYUNIQUETriggersDisabling ConstraintsClient ValidationsRedundant SELECT ClausesParting ShotsChapter 11. Stored ProceduresRefresherAdvantages of Stored ProceduresParting ShotsChapter 12. ODBCRefresherSQLPrepareFetch LoopsData-Change StatementsCatalog FunctionsParting ShotsChapter 13. JDBCConnectionsQuery PreppingResult SetsData ChangesParting ShotsChapter 14. Data ChangesLogsINSERTUPDATEDELETEUgly UpdatesFETCH and Data ChangesCOMMIT and ROLLBACKParting ShotsChapter 15. LocksWhat Is a Lock?Isolation LevelsIndex LocksHot SpotsOptimistic LockingThe Scan TrickParting ShotsChapter 16. Clients and ServersMiddlewareServer Processes and ThreadsWhat Should the Client Do?Parting ShotsChapter 17. Cost-Based OptimizersCostStatistics and HistogramsEXPLAINHintsParting ShotsAppendix A. Further ReadingAppendix B. Glossary