Den DB2 -databas ledningssystem , som med de flesta relationsdatabaser , sysselsätter speciella filer som kallas index för hastighetsrekord uppslagningar . Merparten av tiden , program använder ett index för att hämta en specifik post från en databas tabell , men låter DB2 du hitta flera poster som representerar ett intervall . I det senare fallet skapar du en strukturerad uttalande Query Language som använder orättvisor som är större än eller mindre än . Varför använda ett index ?
Utan ett index måste en dator läser varje post i en tabell tills den hittar en som matchar ett kriterium . Till exempel har en online-återförsäljare en databas tabell som innehåller 100.000 kunder . När Joe Smith loggar in med sitt kundnummer , skulle datorn behöva läsa tiotusentals poster tills den ligger hans . Genom sig själv , tar operationen några sekunder , multiplicerat med tusentals kunder , blir det timmar av extra behandling . Ett index lagrar bara de kund-ID i en separat fil organiserat för snabb åtkomst . DB2 lokaliserar den önskade posten position i filen efter att ha läst några index poster , med positionsnummer , hämtar den posten i huvudtabellen direkt . Använda ett index , finner DB2 en post i några tusendelar av en sekund , kraftigt påskynda många databas uppgifter .
Jämlikhet och ojämlikhet
Ett typiskt program använder en jämlikhet att hämta en indexerad post från en DB2- tabell , som följande SQL- kod visar :
SELECT CUSTOMER_NAME , adress , stad , stat FROM kunder WHERE CUSTOMER_ID = '51412 ' ;
WHERE i SELECT-satsen motsvarar den CUSTOMER_ID fältet till ett kundnummer värde . Ibland kanske du vill se posterna med ett intervall av värden , som i följande SQL-uttryck :
SELECT CUSTOMER_NAME , adress , stad , stat FROM kunder WHERE CUSTOMER_ID > = '51400 ' ;
Här drar uttalandet många poster från databasen , som börjar med den som har ett kund -ID som är större än eller lika med 51400 . Användningen av större än eller lika med symbol är ett exempel på en olikhet . Även om en jämlikhet hämtar poster som matchar ett enda värde , finner en olikhet register över större eller mindre värde .
The Gillar Operator
DB2 använder en tabell index där möjligt , även om det beror på din SQL-sats är WHERE. Om meddelandet har ojämlikhet , kan DB2 fortfarande använda indexet , men effektiviteten kan drabbas . Den LIKE illustrerar hur indexet fungerar i olika situationer , i praktiken skapar ojämlikhet med sina jokertecken , " % " och den mest effektiva SQL-sats väljer en enda oavbruten serie , som följande SQL- shows " _ . " :
SELECT CUSTOMER_NAME , adress , stad , stat FROM kunder WHERE CUSTOMER_ID LIKE '514 % ' ,
uttalandet hittar alla poster som har customer_IDs börjar med DB2 finner den första posten som uppfyller detta kriterium " 514 . " , hämtar alla efterföljande poster som matchar , och stannar sedan . Nästa SQL-uttrycket är mindre effektiv :
SELECT CUSTOMER_NAME , adress , stad , stat FROM kunder WHERE CUSTOMER_ID LIKE ' _1400 ' ,
Här jokertecknet " _ " anger alla kund-ID som slutar med " 1400 " , men som börjar med valfritt antal . DB2 måste söka de flesta av indexet , hitta alla ID: n som börjar med " 1 ", " 2 " och så vidare fram till slutet av tabellen . Indexet sparar mindre tid i den här situationen .
Multi - Field Indexes
WHERE klausuler i många SELECT-satser ange flera områden . För att förbättra hastigheten på dessa väljs , kan ett index rymma mer än ett fält . Till exempel ser följande SQL för poster med en kombination av jämlikhet och ojämlikhet operationer :
SELECT CUSTOMER_NAME , adress , stad , stat FROM kunder WHERE state = ' IL ' OCH zip_code > = '60600 ' ;
Om du ofta hämtar data med samma områden och kriterier , skapa ett nytt index som kombinerar fälten . För bästa effektivitet , sätta jämställdhet fälten i indexet först , följt av den ojämlikhet fälten .