Avatar billede w13 Novice
29. oktober 2010 - 12:23 Der er 12 kommentarer og
1 løsning

Datatyper: bigint vs. decimal

Hej Eksperter.

Jeg sidder og prøver at optimere mine datatyper i en MySQL-database.

I den forbindelse vil jeg gerne kunne opbevare nogle talkombinationer, som kan indeholde op til 32 tegn.

Bruger jeg datatypen 'bigint', kan jeg kun opbevare op til tallet 18.446.744.073.709.551.615, dvs. 20 tegn. Bruger jeg derimod 'dec' (decimal), kan jeg opbevare op til 65 numeriske tegn, dvs. et langt højere tal en med 'bigint'.

Så mit spørgsmål går på: bør jeg virkelig opbevare mine værdier som 'decimal'-typer, når jeg vil have over 20 tegn? Og kan det betale sig, performance-mæssigt? Jeg kunne selvfølgelig opbevare dem som tekst-strenge, men bør det ikke performe endnu dårligere?

Håber der er nogen derude, der har nogle gode bud. :)

På forhånd tak!

Med venlig hilsen
Tobias
Avatar billede The_Buzz Novice
29. oktober 2010 - 12:28 #1
Hej Tobias

Varchar eller Text felter er mega langsommere end int's / bigint at sortere osv i. Desuden skal du bruge en php funktion til at lave en sum eller average fremfor mysql's egen.

Fordele er at bigint er meget hurtig, decimal er mellem og text er røv langsom.

Eller det er min erfaring ihvertfald.

Dog vil du meget sandsynligvis med en quadcore server eller lignede aldrig kunne mærke forskellen mellem bigint eller decimal. (igen min mening).
Avatar billede w13 Novice
29. oktober 2010 - 12:32 #2
Ok, så du vil mene, at jeg bør bruge decimal frem for varchar / text, når jeg skal gemme mere end 20 tegn?
Avatar billede The_Buzz Novice
29. oktober 2010 - 12:40 #3
tegn? tal?

http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

Jeg bruger double ofte fordi de er altid store nok til det jeg skal bruge dem til.

På ovenstående URL er der en forklaring af det enkelte datatyper
Avatar billede The_Buzz Novice
29. oktober 2010 - 12:43 #4
Hvad skal man gemme så store tal for egentlig? :D
Avatar billede mcb2001 Nybegynder
29. oktober 2010 - 12:54 #5
Man bruger ofte meget store tal til kryptering.

Men hvis man skal arbejde på store tal, så ville jeg også bruge Decimal
Avatar billede w13 Novice
29. oktober 2010 - 13:02 #6
The_Buzz>> Ja, tal, altså kun cifre. :) Jeg kom også fra det link, og det var egentlig der, jeg blev i tvivl om, hvad der var mest 'rigtigt' at gøre.

Som Mcb2001 skriver, så er det hovedsageligt krypterede værdier, der behøver denne type. (Og så også bare teoretisk, fordi jeg blev i tvivl, og det er 'nice-to-know'. :) )

Jeg holder lige tråden åben i noget tid endnu for at se, om der er nogle andre tanker omkring emnet.
Avatar billede The_Buzz Novice
29. oktober 2010 - 13:04 #7
Til så store værdier og kryptering - Decimal :)
Avatar billede w13 Novice
29. oktober 2010 - 13:14 #8
Jeg tror også grunden til at jeg spørger er, at det virker ulogisk for mig at man er nødt til at bruge en decimal-type for at gemme store heltal. :o)
Avatar billede mcb2001 Nybegynder
29. oktober 2010 - 13:28 #9
hvis du virkelig er interesseret, så kan du faktisk kigge på hvordan din computer rent fysisk behandler dine data.

Og hvis du arbejder med heltal, så er det (så vidt jeg husker) sådan at PHP behandler alle tal som decimaltal, og bruger de Processorkald, der udfører floating-point operationer.

Men ja, det giver ikke altid mening for brugeren, men der er af og til en programmeringsmæssig fordel i kun at lave kald til floating-point delene, og så helt undlade at bruge Integer delene.

Men det var bare en lille side bemærkning.
Avatar billede w13 Novice
29. oktober 2010 - 13:37 #10
Ok, tak! :)
Avatar billede w13 Novice
05. november 2010 - 17:06 #11
Nå, nu er det vist lukketid her. Smid I bare et svar begge 2! :)
Avatar billede mcb2001 Nybegynder
05. november 2010 - 18:07 #12
Velbekomme
Avatar billede w13 Novice
06. november 2010 - 17:26 #13
Så mangler vi bare The_Buzz. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester