Vi har allesammen hørt tippet/formaningen om at benytte COLX IN (2,10) i stedet for at skrive COLX = 2 OR COLX = 10. Efter version 5 af DB2 kom på banen er dette tip blevet endnu mere aktuelt, idet DB2 er blevet ekstremt god til at benytte indexer sammen med IN-lister.
Antag at INDEX1 på TABELX består af kolonnerne COLA og COLB i denne rækkefølge. Følgende SQL-kald vil normalt resultere i MATCHCOLS = 2:
Det er da mageløst, ikk'. Antag nu, at TABELY har en kolonne COLA, der er defineret nøjagtig som COLA i TABELX (NOT NULL og NOT NULL WITH DEFAULT er nøjagtig det samme, mens NULL og NOT NULL absolut ikke er). Hvilken MATCHCOLS-værdi på den ydre SELECT tror du følgende SQL-kald har?
Resultatet er også MATCHCOLS = 2. Det fortjener DB2-laboratoriet mindst et udråbstegn for. På en af de installationer, hvor jeg har været, lykkedes det os at nedbringe køretiden for en central batch-afvikling fra 1 time til under 5 minutter ved hjælp af ovenstående teknik. Alt andet var blevet prøvet, men uden held. Teknikken kan kun anvendes, hvis resultat-tabellen ikke behøver indeholde kolonne-værdier fra tabellen i sub-select'en.