MySQL indexelés: hogyan találd meg a lassú lekérdezést?
Az index nem általános gyorsítókapcsoló. A megfelelő index egy konkrét lekérdezés szűrését, rendezését vagy kapcsolását támogatja, miközben tárhelyet és írási költséget is jelent. Előbb a lassú műveletet kell azonosítani.
Az index nem általános gyorsítókapcsoló. A megfelelő index egy konkrét lekérdezés szűrését, rendezését vagy kapcsolását támogatja, miközben tárhelyet és írási költséget is jelent. Előbb a lassú műveletet kell azonosítani.
Mérj reprezentatív adaton
Kapcsold be ellenőrzött időre a slow query logot vagy alkalmazásprofilozást. Fejlesztői, néhány száz soros adatbázison gyors lehet az a lekérdezés, amely élesben millió soron akad el.
Olvasd el az EXPLAIN tervet
Figyeld a becsült sorokat, választott indexet, teljes táblabejárást, ideiglenes táblát és rendezést. Az `EXPLAIN ANALYZE` futtatásával óvatosan bánj, mert ténylegesen végrehajtja a lekérdezést.
Az összetett index sorrendje számít
Az index elején álló oszlopok határozzák meg, mely feltételek használhatók hatékonyan. Egy `status, created_at` index más lekérdezést támogat, mint a fordított sorrend. A valós WHERE és ORDER BY alapján dönts.
Ellenőrizd az írási oldalt is
Minden új index lassíthatja az INSERT és UPDATE műveletet. Távolítsd el a bizonyítottan felesleges átfedéseket, és optimalizálás után ugyanazzal a terheléssel mérj újra.
Gyakorlati ellenőrzőlista
- slow query minta
- valós adatmennyiség
- EXPLAIN terv
- lekérdezéshez illő összetett index
- előtte-utána mérés
Egy konkrét példa
A `WHERE status="new" ORDER BY created_at DESC LIMIT 50` lekérdezéshez a két oszlopot együtt kezelő index lehet hasznos. Két külön egyoszlopos index nem feltétlenül ad ugyanilyen tervet.
Kapcsolódó útmutatók és szolgáltatások
Következő lépés
Küldd el az anonimizált lekérdezést, az EXPLAIN eredményét és a tábla nagyságrendjét. Ezek nélkül az indexjavaslat csak találgatás. Kérj személyre szabott egyeztetést, vagy nézd meg az árkalkulátort.
Segítségre van szükséged?
Ha hasonló kihívással küzdesz, vagy egyedi fejlesztést szeretnél, beszéljük át a részleteket.
Ajánlatot kérek