sql >> Database teknologi >  >> RDS >> Mysql

MySQL-indeks for MIN og MAX

SELECT MIN(b), MAX(b) FROM tbl WHERE a = 12;

elsker

INDEX(a, b)

begge kolonner i nævnte rækkefølge.

Forespørgslen søger i indekset efter a = 12 , griber den første (a,b) par for at få MIN(b) og griber det sidste par for at få MAX(b) .

Udsagnet om "erstatning med en konstant" er forvirrende, fordi det går for dybt ind i detaljerne om, hvordan det først finder ud af, hvordan det skal udføre forespørgslen (hvilket tilfældigvis får min og maks), derefter fortsætter med at udføre det, der er tilbage af forespørgslen (intet er tilbage).

Mere generelt er det optimale indeks normalt en der starter med alle WHERE kolonner sammenlignet med konstanter med = . Derefter bliver det komplekst, så lad mig give et andet tip:

Et "dækkende" indeks er et, der har alle kolonnerne nævnt i SELECT (a og b i mit eksempel).

Beklager, jeg ser ikke ud til at være tydeligere end manualen.



  1. Hvor kan jeg downloade mysql jdbc jar fra?

  2. Brug af en variabel i WHERE-sætningen

  3. IKKE I valg med NULL-værdier

  4. Hvordan sætter man en streng foran en kolonneværdi i MySQL?