Adatbázis index - az élethosszig prog

építészet

Kétféle indexek: fürtözött és nem fürtözött. Minden tábla csak egy fürtözött index és sok a nem fürtözött. Jelenlétében fürtözött index táblázat sorok fizikailag tárolják egy előre meghatározott sorrendben, és közvetlenül kapcsolódnak az index az elemek, ezáltal jelentősen felgyorsítja az adatokhoz való hozzáférés a lekérdezések teljesítményét, hogy használja az indexet. Ha a tábla nem fürtözött index, az asztal rendezetlen. Nem fürtözött index létrehozott egy táblázat, amely tartalmaz egy mutatót a táblázat bejegyzés, ezért ha a minta legalább még egy lemez hozzáférés, hogy a bejegyzés nevét asztalra.

Az indexek lehetnek fizikailag megvalósított különböző szerkezetek. A leggyakoribb a B + fákat, hash táblák.

Az oszlopok sorrendjének egy kompozit index

A sorrend, amelyben az oszlopok képviselik egy összehajtott index kellően fontos. A tény az, hogy kap egy sor on-demand sújtó adatait csak az első indexelt oszlopok, akkor. Azonban a legtöbb adatbázisban lehetetlen vagy gazdaságtalan adatgyűjtő a második, stb Csak indexelt oszlopok (anélkül, hogy az első).

hatékonyság

Az optimális teljesítmény indexek a lekérdezések általában létre a oszlopokban gyakran használt lekérdezések. Egy tábla hozható létre többszörös indexek. Ugyanakkor egyre nagyobb száma indexek lelassul hozzáadása, frissítése, törlése táblázat sorai, mert szükséges, hogy frissítse az indexek magukat. Ezen túlmenően, indexek vegye fel további memóriát, így létrehozása előtt az index meg kell győződnie arról, hogy a nyereség, amely a tervek szerint a lekérdezési teljesítmény meghaladják a többletköltségeket a számítógépes erőforrások index támogatást.

korlátozások

Indexelések sok felhasználási területen alkalmazhatók, de használatuk korlátozásokat vezettek be. Tekintsük ezt az SQL lekérdezést. SELECT first_name emberektől WHERE last_name = 'Frankenstein';. Megvalósítani egy ilyen kérés nélkül egy index adatbázist, hogy ellenőrizze last_name területén minden sorban (ez a mechanizmus az úgynevezett „teljes keresés” vagy „teljes scan asztal”, akkor megjelenik szempontjából a szó «természetes»). Amikor egy adatbázis index egyszerűen átmegy a bináris fa, amíg nem talál egy rekord „Frankenstein” .Such átjáró igényel sokkal kevesebb erőforrást igényel, mint egy nagyon alapos keresést az asztalra.

Most, hogy ez a lekérdezés: SELECT email_address ügyfelektől WHERE email_address LIKE '% @ yahoo.com'. Ezt a kérelmet úgy találjuk, hogy minden ügyfél, akinek az e-mail végződik „@ yahoo.com», de akkor is, ha az oszlop email_address index adatbázis továbbra is használni fogja kimerítő keresés az asztalra. Ez annak a ténynek köszönhető, hogy az indexek a feltételezésen alapul, hogy a szavak / karakter megy balról jobbra. a helyettesítő karakter az elején én keresni az adatbázis megszünteti a lehetőségét, hogy egy bináris kereső fába. Ezt a problémát meg lehet oldani ami egy további index a szavai fordított (email_address) és lekérdezés nézetek Ebben az esetben a helyettesítő lesz a legtöbb helyes pozícióban ( «moc.oohay%»), ami nem zárja ki a index alkalmazása fordított válasszuk email_address ügyfelektől, ahol fordított (email_address), mint a fordított ( "% @ yahoo.com),. (: email_address).