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

char vs varchar for ydeevne i lagerdatabase

I MyISAM er der en vis fordel ved at lave poster med fast bredde. VARCHAR er variabel bredde. CHAR er fast bredde. Hvis dine rækker kun har datatyper med fast bredde, så har hele rækken fast bredde, og MySQL opnår en vis fordel ved at beregne pladsbehovet og forskydningen af ​​rækker i den tabel. Når det er sagt, kan fordelen være lille, og det er næppe en mulig lille gevinst værd, der opvejes af andre omkostninger (såsom cacheeffektivitet) ved at have polstrede CHAR-kolonner med fast bredde, hvor VARCHAR ville opbevare mere kompakt.

Brydepunktet, hvor det bliver mere effektivt, afhænger af din applikation, og det er ikke noget, der kan besvares, undtagen ved at du tester begge løsninger og bruger den, der fungerer bedst til dine data under din applikations brug.

Med hensyn til INT(7) versus INT(11) er dette irrelevant for opbevaring eller ydeevne. Det er en almindelig misforståelse, at MySQL's argument til INT-typen har noget at gøre med størrelsen på dataene - det gør den ikke. MySQL's INT-datatype er altid 32 bit. Argumentet i parentes henviser til, hvor mange cifre der skal udfyldes, hvis du viser værdien med ZEROFILL. For eksempel. INT(7) vil vise 0001234, hvor INT(11) vil vise 00000001234. Men denne udfyldning sker kun, når værdien vises, ikke under lagring eller matematisk beregning.



  1. MySQL transaktion med regnskabsapplikation

  2. Django kunne ikke finde MySQLdb python-modulet

  3. MySQL indsæt data fra anden tabel

  4. Sletning af dublerede rækker fra en tabel