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

Decimal VS Int i MySQL?

Det kan afhænge af den version af MySQL du bruger. Se her .

Før MySQL 5.0.3 blev DECIMAL-typen gemt som en streng og ville typisk være langsommere. Da MySQL 5.0.3 dog DECIMAL-typen er gemt i et binært format, så med størrelsen på din DECIMAL ovenfor, er der muligvis ikke stor forskel i ydeevne.

Det vigtigste præstationsproblem ville have været mængden af ​​plads, som de forskellige typer optager (hvor DECIMAL er langsommere). Med MySQL 5.0.3+ ser dette ud til at være et mindre problem, men hvis du skal udføre numeriske beregninger på værdierne som en del af forespørgslen, kan der være en vis ydeevneforskel. Dette kan være værd at teste, da der ikke er nogen indikation i dokumentationen, som jeg kan se.

Rediger: Med hensyn til int(10) unsigned , jeg tog dette for pålydende værdi som blot værende en 4 byte int. Dette har dog en maksimal værdi på 4294967295, hvilket strengt taget ikke giver det samme talinterval som en DECIMAL(10,0) unsigned .

Som @Unreason påpegede, skal du bruge en bigint for at dække hele rækken af ​​10-cifrede tal og skubbe størrelsen op til 8 bytes.

En almindelig fejl er, at når de angiver numeriske kolonnetyper i MySQL, tror folk ofte, at tallet i parentes har en indflydelse på størrelsen af ​​det tal, de kan gemme. Det gør den ikke. Nummerområdet er udelukkende baseret på kolonnetypen og om den er signeret eller usigneret. Tallet i parentes er til visningsformål i resultater og har ingen indflydelse på de værdier, der er gemt i kolonnen. Det vil heller ikke have nogen indflydelse på visningen af ​​resultaterne, medmindre du angiver ZEROFILL mulighed også i kolonnen.



  1. Bedste praksis for paginering i Oracle?

  2. Bookingkalender Ankomst- og afrejsedatoer

  3. Vælg alle poster fra en tabel, der ikke findes i en anden tabel i Laravel 5.1

  4. Datotid lig med eller større end i dag i MySQL