MySQL lekérdezés optimalizálása - a használata indexek - alternatív sorrendben - példák Perl

MySQL nagy a funkciók a különböző típusú (ORDER BY), csoport (BY), egyesületek (LEFT JOIN vagy RIGHT JOIN), és így tovább. Mindegyikük bizonnyal kényelmes, de egy egyszeri kéréseket. Például, ha az a személy, ha kell valami, hogy beleveti magát a bázis egy csomó táblázatok és szalagok, eltekintve a fenti funkciókat lehetséges, sőt szükséges, hogy egy feltételes állítás IF. A fő hiba a kezdők egy erőfeszítés, hogy vezessenek be ilyen kérelmet az operációs kódot az oldalon. Ebben az esetben az összetett lekérdezés biztosan szép, de káros. A lényeg az, hogy az összes piaci rendezi, csoportok, egyesületek, vagy egymásba ágyazott lekérdezések nem hajtható végre a memóriában, és használja a merevlemezt, hogy hozzon létre ideiglenes táblák. A kemény, mint tudjuk - a legszűkebb helyen a szerver.







Szabályzat optimalizálás mysql lekérdezés

1. Kerülje a beágyazott lekérdezések

Ez a legsúlyosabb hiba. A szülő mindig várja a gyermek, és ebben az időben, hogy tartsa a kapcsolatot az adatbázissal, használja a lemezt, és betölteni iowait. Két párhuzamos lekérdezést az adatbázis és hajtsa végre a kívánt szűrési a szerver shell (Perl. PHP és t. D.), végre sokkal gyorsabb, mint beágyazott.







Példák Perl. hogyan ne:

vagy az olyan, mint ez:

Ha szükség van az ilyen intézkedés minden esetben jobb, ha egy hash, tömb, vagy bármilyen más módon kiszűrni.

A következő példa perl, hogyan szoktam csinálni:

2. Ne rendezni, nincsenek csoportosítva vagy szűrők a bázis

Ha lehetséges, ne használja a saját lekérdezés nyilatkozat ORDER BY, GROUP BY, csatlakozhat. Mindannyian használja az ideiglenes táblák. Ha a válogatás vagy csoportosulás csak akkor szükséges, hogy megjelenjen az elemek, mint például az ábécé, akkor jobb, hogy végre ezeket az intézkedéseket a változók tolmács.

Példák a perl, és nem szabad rendezni:

A következő példa perl, mint egyfajta szoktam:

Így sokkal gyorsabb. Különösen észrevehető különbség, ha egy csomó adat. Ha szeretné rendezni a perl több területen, akkor lehet alkalmazni, Schwartz válogatás. Ha azt szeretné, hogy bármilyen ORDER BY RAND () - használja véletlenszerű válogatás a perl.

3. indexek

Ha lehet feladni, bizonyos esetekben, akkor lehetséges lesz, ahonnan aligha az a fajta az adatbázisban. Ezért a mezők, ami megy az összehasonlítás, akkor létre kell hozni az indexek. Ők most készült.

Ha a 255 - kulcs hossza. Bizonyos adattípusok, akkor nincs szükség. Részletek a dokumentációban a MySQL.