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.