orosz (ru) - indexek mysql indexelő kód q Hogyan

Alapvetően az index táblázatot működik, mint egy index egy könyvet (innen a név):

Tegyük fel, hogy van egy könyvet adatbázisok, és szeretné megtalálni néhány információt a boltban. Az index nélkül (anélkül, hogy extra segítséget, mint például a tartalomjegyzék), akkor át kell esniük oldalak egyesével, amíg meg nem találja a témát (ez a teljes táblázatot scan). Másrészt, az index a kulcsszavak listáját, így utal az index, és milyen tárolási említi oldalakon 113-120, 231 és 354. Akkor majd közvetlenül a azokat az oldalakat, anélkül, hogy keressen (a keresés az index, egy kicsit gyorsabb ).

Persze, hogy hasznos az index sok mindentől függ - néhány példa a fent összehasonlítás:

  • Ha egy könyvet adatbázisok és indexelt szó „adatbázis”, látni fogja, hogy ez említett oldalakon 292-400 és 1-59,61-290. Ebben az esetben az index nem nagyon hasznos, és gyorsan tud navigálni az oldalak egymás után (az adatbázis egy „szegény szelektivitás”).
  • Egy 10 oldalas könyv nincs értelme, hogy dolgozzon ki egy indexet, így kap egy 10 oldalas könyvet előtaggal 5 oldal, ez csak buta - csak ellenőrzi a 10 oldalt, és azokat,
  • Az index szintén hasznosak lehetnek - általában nincs értelme index, például a frekvencia a levél «L» az oldalon.

Az első dolog, amit tudnia kell, hogy az indexek - a módja, hogy elkerüljük a teljes táblázat vizsgálat, hogy az eredmény, amit keres.

Vannak különböző típusú indexek, és azok végrehajtását a tárolási szintet, így közöttük nincs szabványos, és attól is függ, a tárolórendszer.

InnoDB index B + fa

Mert InnoDB a leggyakoribb típusú index az index B + fa, amely tárolja az elemeket rendezett sorrendben. Ezen felül, akkor nem kell menni egy igazi asztal, hogy az indexelt értékek, amely felgyorsítja a kérését.

„Probléma” az ilyen típusú index, hogy meg kell kérni a bal szélső érték az index. Tehát, ha az index két oszlopa van, például last_name és first_name, a sorrendet, hogy kérje ezeken a területeken nagy jelentősége van.

Tehát, mivel a következő táblázat tartalmazza:

Ebben a lekérdezésben az index lesz használva:

Mert először kérdezed az első oszlop első, és nem a bal szélső oszlopban az index.

Ez utóbbi példa még ennél is rosszabb:

Mert most csak összehasonlítjuk a jobb oldalon a jobb oldali mezőben az index.

A hash index

Ez egy másik index típusa, amely, sajnos, csak támogatja a memória. Ez villámgyors, de hasznos, csak a teljes kereső, ami azt jelenti, hogy nem lehet használni, hogy írja> műveleteket. <или LIKE.

Mivel ez csak akkor működik a memória bekeda, akkor valószínűleg nem fogja használni, hogy nagyon gyakran. A fő esemény, ami szerintem most -, hogy hozzon létre egy ideiglenes táblát a memóriában egy sor eredmények a választás és számos egyéb mintát az ideiglenes tábla segítségével hash indexek.

A probléma a fenti példa az, hogy mivel a CRC32 funkciót generál hash meglehetősen kicsi, akkor kap egy csomó ütközések a kivonatolt értékeket. Ha szüksége van a pontos értékeket, akkor oldja meg a problémát a következő lépéseket követve:

Mégis érdemes egy hash dolgokat, még akkor is, ha az ütközések száma nagy, mert csak a második összehasonlítás (string) az ismételt hash-eket.

Sajnos ezzel a módszerrel, akkor is kell, hogy egy táblázatban hasonlítja össze a pályát url.

betakar

Néhány tény, hogy akkor veszi figyelembe, minden alkalommal, amikor akar beszélni optimalizálás:

Integer összehasonlítást végezni gyorsabban összehasonlítását szálakat. Ez szemléltethető a példája emulációs hash index InnoDB.

Esetben további lépéseket a folyamat így gyorsabb, nem lassabb. Ezt szemlélteti az a tény, hogy ha lehet optimalizálni SELECT. osztja azt két lépésben, először is az értékeket a tárolás az újonnan létrehozott táblázatot a memóriában, majd hajtsa végre a nehezebb igényeket a második táblázatban.

A MySQL, vannak más indexek, de azt gondolja, hogy a B + fa az egyik leggyakrabban használt valaha, és a hash - jó dolog, de megtalálható más a MySQL dokumentációt.

Azt ajánlom, hogy olvassa el a könyvet „High Performance MySQL”, a válasz egyértelműen fenti alapján ő fejezetet indexek.

Szóval, mi az index Nos, az index - egy adatstruktúrát (leggyakrabban ez B-fa), amely tárolja értékeit egy adott oszlophoz tablitse.Indeks tablitsy.Itak létre az oszlop, a legfontosabb pontokat, hogy szabad elfelejteni, hogy index áll oszlop értékeit egy asztal és hogy ezek az értékek vannak tárolva a szerkezet dannyh.Indeks - adatstruktúra - emlékszik erre.

Kezdjük bemutató, és megmagyarázza, hogy miért kell egy adatbázis index, amelynek nagyon egyszerű példát. Azt feltételezzük, hogy van egy adatbázis tábla úgynevezett Dolgozói három oszlop - Employee_name, Employee_Age és Employee_Address. Tegyük fel, hogy a Munkavállaló tábla ezer sort.

Tegyük fel, hogy szeretnénk futtatni egy lekérdezést, hogy megtalálja a részleteket minden alkalmazottak, akik neve "Jézus? Ezért úgy döntöttünk, hogy fut egy egyszerű lekérdezést a következők szerint:

Mi fog történni, anélkül index az asztalra?

Miután a lekérdezés futtatásához, hogy pontosan mi folyik a színfalak mögött, hogy megtalálja az alkalmazottak, akik nevezték Jézust? Nos, az adatbázis-szoftver szó szerint meg kell nézni minden egyes sorban a Munkavállaló asztalra, hogy ha a Employee_name e sor "Jézus. pontosan mi megy a színfalak mögött, hogy megtalálja az alkalmazottak, akik nevezték Jézust? Nos, az adatbázis-szoftver szó szerint meg kell nézni minden egyes sorban a Munkavállaló asztalra, hogy ha a Employee_name e sor "Jézus. És mivel azt szeretnénk, hogy minden sorban a neve „Jesus” benne, akkor nem csak megáll keres, amint találunk csak egy sort a neve „Jesus”, mert előfordulhat, hogy más vonalak a Jézus nevében. Így minden sorban az utolsó sort kell naydena` - ami azt jelenti, hogy több ezer sornyi ebben a szcenárióban ellenőrizni kell az adatbázis, hogy megtalálják a vonalat a neve „Jézus”. Ez az, amit az úgynevezett teljes táblázat vizsgálat.

Ennek adatbázis index segítségével a teljesítmény

Mi adatstruktúra egy index?

B-fák leggyakrabban használt adatszerkezeteket indeksov.Prichina, amelynél a B-fák legnépszerűbb adatszerkezetet az index, mivel hatásosak az időben - mint a keresés, eltávolítása és behelyezése végezhetjük logaritmikus vremeni.I még az egyik fontos ok, amiért a B-fákat gyakrabban használják, hogy a tárolt adatok a B-fát lehet otsortirovany.SURBD általában meghatározza, hogy mely adatok szerkezete ténylegesen felhasznált nem indeksa.No Otori szkripteket adott RDBMS, megadhatja, hogy milyen adatszerkezetet használni kívánt adatbázis létrehozásához maga az index.

Az index javítja a teljesítményt?

Hogyan hozzunk létre egy indexet az SQL:

Itt van, hogyan kell nézni, hogy a tényleges SQL, hogy hozzon létre egy indexet Employee_name oszlop példánkban korábban:

Hogyan lehet létrehozni egy index több oszlop az SQL:

Azt is létrehoz egy indexet két oszlopban a Munkavállalói táblázat, ahogy ebben az SQL:

A fő index - egy térképet az összes kulcsot sorba rendezve. A lista annak érdekében, ahelyett, hogy minden egyes kulcsfontosságú teszt tehet valamit, mint ez:

1: mozgassa a közepén a lista - felett vagy alatt, amit keresek?

2: Ha a fenti megy egy közbenső ponton a középső és az alsó, amikor az alsó, közbenső és felső

3: Ez magasabb vagy alacsonyabb? Ismét megy a középpont, és így tovább. D.

Ezt a logikát, megtalálja egy elemet rendezett listáját körülbelül 7 lépésben ellenőrzés helyett az egyes elemeket.

Nyilvánvaló, hogy vannak nehézségek, de ez ad egy alap ötlet.

adatbázis index vagy index csak gyorsítja fel az adatok visszanyerését táblázatok. Ha az Ön által kért adatokat a táblázat első, MySQL ellenőrzi, hogy vannak-kódok, akkor a MySQL használja az indexet, hogy válassza ki a pontos fizikai megfelelő sort a táblázatba helyett végigolvasni a teljes táblázatot.

adatbázis index hasonlít a könyv index. Ha azt szeretnénk, hogy talál egy témát nézi az első index, majd nyissa meg az oldalt a téma, és nem nézett az egész könyvet.

Azt javasoljuk, hogy hozzon létre egy indexet a táblázat oszlopait, ahonnan a gyakran használt adatokat. Felhívjuk figyelmét, hogy az elsődleges kulcs oszlopok a fő index a táblázat automatikusan.

Ha az index segít felgyorsítani az adatok lekérdezése, miért nem használja az indexet bármely oszlop? Ha létrehoz egy indexet az egyes oszlop, MySQL építeni és fenntartani az index táblázat. Valahányszor változás történik rekordok egy asztal, MySQL kell újjáépíteni az index, ami időt vesz igénybe, és csökkenti a teljesítményt az adatbázis szerver. Létrehozása MySQL index

Gyakran létre indexek létrehozásakor táblázatokat. MySQL automatikusan hozzáadja az index egy oszlop, deklarált elsődleges kulcsként, KEY, egyedi, vagy indexet. Ezen felül, akkor adjunk hozzá indexek egy táblázat, amely már tartalmaz adatokat.

Index létrehozásához, akkor használja a CREATE INDEX utasítás. Az alábbiakban egy CREATE INDEX szintaxis: 1 2 3

Először is, meg kell adnod egy index alapján a táblázatok vagy tároló:

EGYEDI azt jelenti, hogy a MySQL létre fog hozni egy olyan kikötés, hogy minden érték az index egyedinek kell lennie. Duplikált NULL érték engedélyezett valamennyi tárolási motorok kivételével BDB. FULLTEXT indexek támogatottak csak MyISAM tároló motort és csak akkor elfogadott, az oszlopot az adatok CHAR, VARCHAR vagy szöveget. Térindex támogatja a térbeli oszlopon áll a tároló motor MyISAM. Ezen túlmenően, az oszlop értéke nem lehet NULL.

Akkor adja meg az index, és a típus után a kulcsszót, például B-fán alapuló, hasis, vagy RTREE alapján a táblázat tároló motor.

Az alábbiakban asztal tárolórendszerek, rendre engedélyezett típusú indexek: Támogatott MyISAM B-fán alapuló tárolási indexek, RTREE InnoDB B-fán alapuló MEMORY / HEAP hash, B-fán alapuló NDB hash

Harmadszor, akkor bejelenti a táblázat nevét és az oszlop listáját, amit hozzá kíván adni az indexet. Egy példa létrehozásának index MySQL

Az adatbázis például, akkor adjunk hozzá egy oszlopot OfficeCode alkalmazottja táblázat az index a CREATE INDEX utasítás az alábbiak szerint: 1

CREATE INDEX officeCode az alkalmazottak (officeCode)

Amellett, hogy létre az index, akkor is törölni az indexet, az üzemeltető DROP INDEX. Érdekes, hogy a DROP INDEX utasítás összehasonlítjuk a kifejezés ALTER TABLE. Az alábbiakban az eltávolítása az index szintaxis: 1

DROP INDEX index_name ON táblanév

Például, ha azt szeretnénk, hogy törölje az index OfficeCode munkavállaló táblázat hoztunk létre a fenti, akkor futtassa a következő lekérdezést: 1

DROP INDEX officeCode az alkalmazottak

Az, ahogyan dolgoznak túl széles, hogy fedezze a helyzetben SO.

Itt van az egyik legjobb magyarázat az indexek, hogy láttam. Sajnos, ez az SQL Server, és nem a MySQL. Nem vagyok benne biztos, hogy a két hasonló.

Egyszerű indexelés. Akkor hozzon létre egy egyedi index a táblázatban. Egy egyedi index azt jelenti, hogy két sorban lehet ugyanaz a mutató értéke. Itt hoz létre egy indexet az asztalra szintaxis

Használhatja egy vagy több oszlopot létrehozni az index. Például mi is létrehozhatunk egy index segítségével tutorials_tbl tutorial_author.

Akkor hozzon létre egy egyszerű index a táblázatban. Csak hagyja az egyedülálló kulcsszót a lekérdezés, hogy egy egyszerű indexet. Egyszerű index lehetővé teszi az ismétlődő értékeket a táblázatban.

Ha azt szeretnénk, hogy index értékek egy oszlopban csökkenő sorrendben, felveheti a fenntartott szó DESC után az oszlop nevét.

Kapcsolódó cikkek