sql >> Databasteknik >  >> RDS >> Mysql

Alla kolumner i tabellen bör indexeras eller inte mysql databas?

Att skapa ett index kräver ytterligare diskutrymme, och att för många index kan orsaka problem som uppstår på grund av filsystemets storleksbegränsningar, måste noggrann eftertanke användas för att välja rätt fält att indexera.

Eftersom index endast används för att påskynda sökningen efter ett matchande fält i posterna, är det naturligt att indexering av fält som endast används för utdata helt enkelt skulle vara ett slöseri med diskutrymme och bearbetningstid när man gör en infogning eller borttagning, och därmed bör undvikas. Också med tanke på karaktären av en binär sökning, är kardinaliteten eller unikheten hos datan viktig. Indexering på ett fält med en kardinalitet på 2 skulle dela data på hälften, medan en kardinalitet på 1 000 skulle returnera cirka 1 000 poster. Med en så låg kardinalitet reduceras effektiviteten till en linjär sortering, och frågeoptimeraren kommer att undvika att använda indexet om kardinaliteten är större än 30 % av postnumret, vilket i praktiken gör indexet till ett slöseri med utrymme.

Så det är bättre att lägga till indexering på grupp av kolumner.



  1. Trace Flag 2389 och den nya Cardinality Estimator

  2. hur man ställer in standardvärde för texttyp i mysql

  3. Utforska modulens API:er i Java 9

  4. hur matar jag ut radnamnet baserat på en länkningstabell?