sql >> Databasteknik >  >> RDS >> Mysql

MySQL-index för MIN och MAX

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

älskar

INDEX(a, b)

båda kolumnerna, i den ordningen.

Frågan letar efter a = 12 i indexet , tar tag i den första (a,b) para för att få MIN(b) och tar det sista paret för att få MAX(b) .

Uttalandet om att "ersätta med en konstant" är förvirrande eftersom det går för djupt in i detaljerna om hur det först tar reda på hur man utför frågan (som råkar få min och max), sedan fortsätter med att exekvera det som finns kvar av frågan (ingenting finns kvar).

Mer generellt är det optimala indexet vanligtvis en som börjar med alla WHERE kolumner jämfört med konstanter med = . Efter det blir det komplicerat, så låt mig ge ett annat tips:

Ett "täckande" index är ett som har alla kolumner som nämns i SELECT (a och b i mitt exempel).

Tyvärr, jag verkar inte vara tydligare än manualen.



  1. Varning:mysql_query():3 är inte en giltig MySQL-länkresurs

  2. Lista över datumformat som är tillgängliga med CONVERT() i SQL Server

  3. Anslut Metabase med MySQL för datautforskning

  4. Kontrollera parametertypen för en partitionsfunktion i SQL Server (T-SQL)