Yleiskatsaus Mikä on yksittäinen indeksi ja mikä on yhdistelmäindeksi? Milloin luoda uusi yhdistelmäindeksi, ja mihin minun tulisi kiinnittää huomiota komposiittiindeksissä? Tämä artikkeli on pääasiassa yhteenveto joistakin Internetissä käytyistä keskusteluista.
Yksi. Käsite
Yksittäinen indeksi tarkoittaa tilannetta, jossa indeksi on listattu yhteen sarakkeeseen, eli uuden indeksin luomisen lauseke toteutetaan vain yhdessä sarakkeessa.
Käyttäjät voivat luoda indeksejä useille sarakkeille, joita kutsutaan yhdistetyiksi indekseiksi (yhdistetyiksi indekseiksi). Yhdistelmäindeksit luodaan täsmälleen samalla tavalla kuin yksittäiset indeksit. Mutta yhdistelmäindeksit vaativat vähemmän kuormitusta tietokantatoimintojen aikana ja voivat korvata useita yksittäisiä indeksejä. Kun taulukon rivien määrä on paljon suurempi kuin avainten määrä, tämä menetelmä voi merkittävästi nopeuttaa taulukon kyselynopeutta.
Samanaikaisesti on kaksi käsitettä: kapeat indeksit ja laajat indeksit, kapeat indeksit viittaavat indeksiin, joissa on 1–2 sarakkea, ja yleensä viittaavat yhteen indeksiin, ellei toisin mainita. Laaja indeksi on indeksi, jossa on yli kaksi saraketta.
Tärkeä periaate indeksisuunnittelussa on käyttää kapeita indeksejä laajojen indeksien sijaan, koska kapeat indeksit ovat yleensä tehokkaampia kuin yhdistetyt indeksit. Kapeammat indeksit antavat optimoijalle enemmän valinnanvaraa, mikä usein parantaa suorituskykyä.
Kaksi. Käyttö
Luo indeksi Luo indeksi IDX1 taulukkoon1 (col1, col2, col3) Tiedustella valitse * taulukosta 1, missä col1= A ja col2= B ja col3 = C
Tällä hetkellä kyselyoptimaattori ei skannaa taulukkoa, vaan ottaa datan suoraan indeksistä, koska indeksissä on dataa, jota kutsutaan päällekkäiseksi kyselyksi, ja kyselynopeus on erittäin nopea.
Kolme. Huomautuksia:
1. Milloin käyttää yhdysindeksiä Where-ehdossa kenttä indeksoidaan, ja jos käytetään useita kenttiä, käytetään yhdistelmäindeksiä. Yleisesti ottaen älä rakenna indeksejä valintakenttään (jos haluat kysyä valitse col1, col2, col3 mytablesta, et tarvitse yllä olevaa indeksiä). Indeksointi ehtojen perusteella on äärimmäisen tärkeä periaate. Ole varovainen, ettet käytä liikaa indeksejä, muuten sillä on suuri vaikutus taulukkopäivitysten tehokkuuteen, koska taulukoita käytettäessä täytyy käyttää paljon aikaa indeksien luomiseen.
2. Yhdistettyjen indeksien kohdalla, kun käytetään kyselyä, on parasta noudattaa indeksien löytämisen järjestystä, joka on tehokkain. Esimerkiksi: IDX1:luo indeksi idx1 taulukkoon1(col2,col3,col5) valitse * taulukosta 1, jossa col2=A ja col3=B ja col5=D
Jos se on "valitse * taulukosta 1, missä col3=B ja col2=A ja col5=D" Tai "valitse * taulukosta 1, missä col3=B" ei käytä indeksiä, tai vaikutus ei ole havaittavissa
3. Korvaako yhdistelmäindeksi yhden indeksin? Monet ajattelevat, että minkä tahansa kentän lisääminen klusteroituun indeksiin voi parantaa kyselyjen nopeutta, mutta jotkut ovat hämmentyneitä: Jos yhdistetyt klusteroidut indeksikentät haetaan erikseen, hidastuuko kyselynopeus? Tämän kysymyksen myötä tarkastellaan seuraavaa kyselynopeutta (tulosjoukko on 250 000 tietoa) :( päivämääräsarake fariqi sijoittuu ensimmäiseksi yhdistetyn aggregaatioindeksin aloitussarakkeessa ja käyttäjätunnus neibuyonghu on toisena)
IDX1:create index idx1 on Tgongwen(fariqi,neibuyonghu)
(1) Valitse Gid, Fariqi, Neibuyonghu, arvonimi Tgongwenista missä Fariqi>'2004-5-5'
Kyselynopeus: 2513 ms
(2) Valitse Gid, Fariqi, Neibuyonghu, arvonimi Tgongwenista missä Fariqi>'2004-5-5' ja neibuyonghu='toimisto'
Kyselynopeus: 2516 ms
(3) Valitse Gid, Fariqi, Neibuyonghu, arvonimi Tgongwenista missä neibuyonghu='toimisto'
Kyselynopeus: 60280 millisekuntia
Yllä olevista kokeista voimme nähdä, että jos kyselyehtona käytetään vain klusteroidun indeksin aloitussaraketta, kaikkien yhdistelmäklusteroidun indeksin sarakkeiden kyselynopeus on lähes sama, jopa hieman nopeampi kuin kaikkien yhdistelmäindeksisarakkeiden käyttö (kun kyselyjen tulosjoukkojen määrä on sama). Jos kyselyehtoina käytetään vain yhdistetyn aggregoidun indeksin ei-alkoivat sarakit, tämä indeksi ei tee mitään. Tietenkin lauseiden 1 ja 2 kyselynopeus on sama, koska kyselyn merkintöjen määrä on sama; jos kaikki yhdistelmäindeksin sarakkeet ovat käytössä ja kyselytuloksia on vähän, tämä muodostaa "indeksin ohitus", jolloin suorituskyky voidaan optimoida. Muista myös, että riippumatta siitä, käytätkö muita sarakkeita aggregaattiindeksissä usein, johtavaa saraketta käytetään useimmin.
[Viite: Kyselyn optimointi ja sivutusalgoritmi http://blog.csdn.net/chiefsailor/archive/2007/05/28/1628339.aspx]
4. Täytyykö minun luoda sama indeksi ja yhdistelmäindeksi samalle sarakkeelle samanaikaisesti? Koe: Sysbase 5.0 taulukko 1 kentät: col1, col2, col3
Testivaiheet: (1) Luo indeksi idx1 col1:lle Suorita valinta * taulukosta 1, missä col1=A käyttää idx1 Suorita valinta * taulukosta 1, missä col1=A ja col2=B käyttävät myös idx1
(2) Poista indeksi idx1 ja luo sitten idx2 (col1,col2) yhdistelmäindeksiin Molemmat kyselyt käyttävät idx2:ta
(3) Jos molemmat indeksit idx1 ja idx2 ovat olemassa Se ei ole siellä, missä col1='A' käyttää idx1; missä col1=A ja col2=B käyttää idx2. Sen kyselyoptimointiohjelma käyttää yhtä aiemmin yleisesti käytetyistä indekseistä. Käytä joko idx1:tä tai idx2:ta.
On nähtävissä, että (1) Taulukossa, jos (col1, col2) on yhdistetty indeksi, ei ole tarpeen luoda yhtä indeksiä col1:lle samanaikaisesti. (2) Jos kyselyehdot sitä vaativat, voit lisätä yhdysindeksin (col1, col2) kohdalle, kun col1:llä on jo yksi indeksi, mikä voi parantaa tehokkuutta jonkin verran. (3) Yhdistelmäindeksin perustamisessa, jossa on useita kenttiä (sisältäen 5 tai 6 kenttää) samanaikaisesti, ei ole erityisen paljon hyötyä; suhteellisen ottaen indeksin luominen useilla kapeilla kentillä (joissa on vain yksi tai korkeintaan 2 kenttää) voi saavuttaa paremman tehokkuuden ja joustavuuden.
5. Täytyykö minun vastata kyselyyn? On yleensä parasta olla käyttämättä strategiaa, joka korostaa täyttä kyselykattoa. Jos kaikki Select-lausekkeen sarakkeet ylikirjoitetaan ei-klusteroidulla indeksillä, optimointi tunnistaa tämän ja tarjoaa hyvän suorituskyvyn. Tämä johtaa kuitenkin usein liian laajaan indeksiin ja liialliseen riippuvuuteen siitä, kuinka todennäköistä optimointia optimointia käytetään. Tyypillisesti kapeita indeksejä käytetään suuremmalle määrälle kyselyitä, mikä parantaa suorituskykyä suurille kyselyille. |