Du skulle förmodligen vara bättre att låta MySql bestämma över frågeplanen. Det finns en god chans att en indexskanning skulle vara mindre effektiv än en heltabellsgenomsökning.
Det finns två datastrukturer på disken för den här tabellen
- Själva tabellen; och
- Primärnyckel B-Tree index.
När du kör en fråga har optimeraren två alternativ för hur du kommer åt data:
SELECT * FROM userapplication WHERE application_id > 1025;
Använda indexet
- Skanna B-Tree-indexet för att hitta adressen till alla rader där
application_id > 1025
- Läs lämpliga sidor i tabellen för att få information om dessa rader.
Använder inte indexet
Skanna hela tabellen och välj lämpliga poster.
Välja den bästa strategin
Frågeoptimerarens uppgift är att välja den mest effektiva strategin för att få den data du vill ha. Om det finns många rader med ett application_id > 1025
då kan det faktiskt vara mindre effektivt att använda indexet. Till exempel om 90 % av posterna har ett application_id > 1025
då skulle frågeoptimeraren behöva skanna runt 90 % av lövnoderna i b-trädets index och sedan läsa minst 90 % av tabellen också för att få de faktiska data; detta skulle innebära att läsa mer data från disken än att bara skanna tabellen.