DB2 database management system , som med de fleste relationelle databaser , særlige filer, der kaldes indekser hastighedsrekord opslag beskæftiger . Det meste af tiden , programmer bruger et indeks til at hente en bestemt post fra en database tabel , men DB2 kan du finde flere poster , der repræsenterer en række . I sidstnævnte tilfælde kan du oprette en Structured Query Language erklæring , der bruger uligheder såsom større eller mindre end . Hvorfor bruge et indeks ?
Uden et indeks skal en computer læse hver post i en tabel , indtil det lokaliserer en, der passer et kriterium. For eksempel har en online-forhandler en database tabel med 100.000 kunder . Da Joe Smith logger på med sin kunde-id , ville computeren nødt til at læse titusinder af journaler , indtil det placeret hans. I sig selv, tager operationen et par sekunder , ganget med tusindvis af kunder , det bliver timers ekstra behandling . Et indeks gemmer bare kunden id'er i en separat fil tilrettelagt for hurtig adgang. DB2 lokaliserer den ønskede record position i filen efter at have læst et par indeks optegnelser med den holdning nummer, henter det rekorden i de vigtigste tabel direkte . Ved hjælp af et indeks , DB2 finder en rekord i få tusindedele af et sekund , i høj grad fremskynde mange database opgaver.
Ligheds-/ulighedsdiskussion
Et typisk program bruger en lighed at hente en indekseret optage fra en DB2-tabel , som den følgende SQL-kode illustrerer : Hej
SELECT CUSTOMER_NAME , adresse , by, stat FROM kunder WHERE CUSTOMER_ID = '51412 ' ,
WHERE klausul i SELECT-sætningen sidestiller CUSTOMER_ID felt til én kunde -id værdi. Indimellem kan du ønsker at se poster med en række værdier , som i det følgende SQL-sætning : Hej
SELECT CUSTOMER_NAME , adresse , by, stat FROM kunder WHERE CUSTOMER_ID > = '51400 ' ;
< p > Her meddelelsen trækker mange registreringer fra databasen , begyndende med den, der har en kunde -id større end eller lig med 51400 . Anvendelsen af den større end eller lig med symbolet er et eksempel på en ulighed . Selv om en lighed henter poster, der matcher en enkelt værdi , en ulighed finder registreringer af større eller mindre værdi .
Operatoren Like
DB2 anvender et bord indeks , hvor muligt , selv om det afhænger af din SQL-sætning er WHERE . Hvis erklæringen har uligheder kan DB2 stadig bruge indekset, men effektiviteten kan lide. Operatoren Like illustrerer, hvordan indekset fungerer i forskellige situationer i realiteten skaber uligheder med sin jokertegn , " %" og den mest effektive SQL-sætning udvælger en enkelt, uafbrudt serie, som følgende SQL viser " _ ". : Hej
SELECT CUSTOMER_NAME , adresse, by, stat FROM kunder WHERE CUSTOMER_ID LIKE '514 % ' ,
Opgørelsen finder alle de poster , der har customer_IDs begynder med DB2 finder den første post, der opfylder dette kriterium " 514 ". , henter alle efterfølgende poster, match, så stopper. Den næste SQL-sætning er mindre effektiv : Hej
SELECT CUSTOMER_NAME , adresse, by, stat FROM kunder WHERE CUSTOMER_ID LIKE ' _1400 «
Her jokertegn " _ "angiver alle kundernes id'er, slutte med " 1400 ", men som begynder med et vilkårligt antal . DB2 skal søge meste af indekset , finde alle de ID'er , der begynder med "1 ", " 2" og så videre gennem enden af bordet . Indekset sparer mindre tid i denne situation.
Multi -Field Indexes
WHERE klausuler i mange SELECT-sætninger angiver flere felter. At forbedre hastigheden af disse vælges , kan et indeks rumme mere end ét felt. For eksempel ser følgende SQL efter poster ved hjælp af en kombination af lighed og ulighed operationer : Hej
SELECT CUSTOMER_NAME , adresse , by, stat FROM kunder WHERE state = ' IL ' AND zip_code > = '60600 ' ; < br >
Hvis du ofte hente data ved hjælp af de samme felter og kriterier , oprette et nyt indeks kombinerer felterne. For bedste effektivitet , satte ligestilling felter i indekset først, efterfulgt af uligheden felter.