Pravděpodobně by bylo lepší nechat MySql rozhodnout o plánu dotazů. Existuje velká šance, že provádění skenování indexu by bylo méně efektivní než skenování celé tabulky.
Pro tuto tabulku jsou na disku dvě datové struktury
- Samotný stůl; a
- Index B-stromu primárního klíče.
Když spustíte dotaz, má optimalizátor dvě možnosti přístupu k datům:
SELECT * FROM userapplication WHERE application_id > 1025;
Použití indexu
- Naskenujte index B-Tree a najděte adresy všech řádků, kde
application_id > 1025
- Přečtěte si příslušné stránky tabulky, abyste získali data pro tyto řádky.
Nepoužíváte index
Prohledejte celou tabulku a vyberte příslušné záznamy.
Výběr nejlepší strategie
Úkolem optimalizátoru dotazů je vybrat nejúčinnější strategii pro získání požadovaných dat. Pokud existuje mnoho řádků s application_id > 1025
pak může být použití indexu méně efektivní. Pokud má například 90 % záznamů application_id > 1025
pak by optimalizátor dotazů musel proskenovat přibližně 90 % listových uzlů indexu b-stromu a poté také přečíst alespoň 90 % tabulky, aby získal skutečná data; to by znamenalo čtení více dat z disku než pouhé skenování tabulky.