sql >> Databasteknik >  >> RDS >> Mysql

Ska vi inkludera sorteringskolumn, primärnyckel på sammansatt index (MySQL)

Svaret beror på motorn du använder:

  • MyISAM - att lägga till id till index kan och kommer förmodligen att hjälpa
  • InnoDB - Primärnyckel är redan en del av varje sekundärt index, eftersom innodb lagrar rader i BTREE sorterade efter primärnyckel och index måste primärt peka på faktisk rad - i så fall är det redundant att lägga till det om det är sist i indexet ( men att göra det kommer inte att lägga till det två gånger, så det borde inte göra saken värre). I vissa fall kanske du vill lägga till det som inte-sista, eller så har du flerkolumns primära och du lägger till några kolumner till ditt index i annan ordning - det borde inte vara några problem med det, innodb kommer att lägga till återstående kolumner av primärt till det indexet, men kan använda de som lagts till tidigare utan att duplicera dem)

Så svarar:

  1. I InnoDB är det onödigt, i MyISAM är det bra om du faktiskt använder den sorteringen, om du inte använder den, lägger du till den gör bara indexet större.
  2. Ordning av kolumner i tabelldefinitionen och ordning i index är separata saker, så det är OK
  3. Ja, det indexet verkar riktigt bra - men du kan kontrollera dig själv med FÖLLA , det finns möjlighet till ännu bättre prestanda - "täckande index ", men det kommer med en kostnad så om inte frågan är kritisk och underpresterande, är den förmodligen överdriven.



  1. Konvertera MySQL till XML via PHP

  2. Lista över datumformatspecifikationer i MySQL

  3. Referera till en tabell i annat schema och utelämna schemanamn

  4. Hur förladdar man tabeller i INNODB buffertpool med MySQL?