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

Skal vi inkludere sorteringskolonne, primærnøgle på sammensat indeks (MySQL)

Svaret afhænger af den motor, du bruger:

  • MyISAM - tilføjelse af id til indeks kan og vil sandsynligvis hjælpe
  • InnoDB - Primær nøgle er allerede en del af hvert sekundært indeks, fordi innodb gemmer rækker i BTREE sorteret efter primær nøgle, og indekset skal primært pege på den faktiske række - i så fald er tilføjelse af det overflødigt, hvis det er sidst i indekset ( men det vil ikke tilføje det to gange, så det burde ikke gøre tingene værre). I nogle tilfælde vil du måske tilføje det som ikke-sidste, eller du har primært med flere kolonner, og du tilføjer nogle kolonner til dit indeks i en anden rækkefølge - der skulle ikke være noget problem med det, innodb tilføjer de resterende kolonner af primært til det indeks, men kan bruge dem, der er tilføjet før uden at duplikere dem)

Så svarer:

  1. I InnoDB er det unødvendigt, i MyISAM er det godt, hvis du rent faktisk bruger den sortering, hvis du ikke bruger den, vil tilføjelse af den kun gøre indekset større.
  2. Rækkefølgen af ​​kolonner i tabeldefinitionen og rækkefølgen i indeks er separate ting, så det er OK
  3. Ja, det indeks virker rigtig godt - men du kan tjekke dig selv ved at bruge FORKLAR , er der mulighed for endnu bedre ydeevne - "dækkende indeks ", men det kommer med en omkostning, så medmindre forespørgslen er kritisk og underpræsterende, er den sandsynligvis overkill.



  1. SQL unikt varchar spørgsmål om følsomhed over for store og små bogstaver

  2. Rediger Django AutoField-startværdi

  3. Træk en række data fra en anden i SQL

  4. Filtrering efter OFFSET-FETCH-indstillinger i Vælg forespørgsel - SQL Server / TSQL vejledning del 118