Avatar billede nemlig Professor
05. maj 2011 - 09:33 Der er 6 kommentarer og
1 løsning

Felt type til 10-cifret tal og mange poster

Hejsa.
Jeg har en tabel, hvor der hvert 5. minut, i døgnets 24 timer og alle årets dage, smides 3 tal og 1 now() værdi. Altså 4 felter + ID. Det bliver til lidt over 100.000 poster om året.

Tabellen anvendes til at gemme nogle måleraflæsninger, og hvor det skal være muligt at Selecte 1 post ud fra datetime. Altså en meget simpel Select.

Jeg vil gerne have tabellen til at køre mest effektivt. Det betyder bl.a. at jeg laver index på ID-feltet.
Men 2 spørgsmål:
1. Hvilken felttype skal jeg anvende til de 10-cifrede tal. Umiddelbart mener jeg "INT".
2. Tabellen ligger på et webhotel (Wannafind), og min oplevelse hos Wannafind, er at MySQL generelt kører hurtigt. Vil de mange poster give performence-problemer, eller skal jeg sørge for, at slette "gamle" poster, så jeg holder mig under et vis antal?
På 10 år vil der ellers ligge over 1. mio. poster.
Avatar billede The_Buzz Novice
05. maj 2011 - 09:41 #1
Umiddelbart skulle jeg mene at 1M poster eller 100M for så vidt, ikke betyder ret meget eftersom du har index på din ID.

Fra http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html :
INT[(M)] [UNSIGNED] [ZEROFILL]
A normal-size integer. The signed range is -2147483648 to 2147483647. The unsigned range is 0 to 4294967295.

BIGINT[(M)] [UNSIGNED] [ZEROFILL]
A large integer. The signed range is -9223372036854775808 to 9223372036854775807. The unsigned range is 0 to 18446744073709551615.

Men personligt, ville jeg vælge en INT til den - og så ærge mig den dag vi kommer over 2.147.483.647 (det er to milliarder - eller i dit tilfælde til cirka 20.000 år data.
Avatar billede arne_v Ekspert
05. maj 2011 - 16:19 #2
Hvis id koerer 1,2,3,... saa er INT nok godt nok.

Men bruges der et bestemt 10 cifret format hvor stoerste tal nemt kan blive 2 eller stoerre skal man op i BIGINT.

De foerste cifre kunne jo vaere aarstal (2 cifre) eller et medarbejder id.
Avatar billede nemlig Professor
05. maj 2011 - 16:49 #3
ID kører 1,2,3, mens de 10-cifrede målertal fx. kan være 4563214321.
Skal ID så være INT og de 3 x målere BIGINT?

Kan jeg undgå ID-feltet og så bare lave INDEX på mit datetime-felt?
Avatar billede nemlig Professor
20. maj 2011 - 20:26 #4
Jeg har det kørende. Send venligst et svar begge 2 og jeg lukker.
Avatar billede arne_v Ekspert
20. maj 2011 - 20:56 #5
svar
Avatar billede arne_v Ekspert
20. maj 2011 - 20:58 #6
Med 5 minutters interval burde det ikke vaere noget problem med tiden som PK.

Men jeg tror ikke at jeg ville goere det. PK boere vaere integer og string typer. Floating point, decimal og tid er ikke generelt gode som PK. At lade et DATETIME felt vaere PK vil nok forvirre mange - og derfor ville jeg undlade det.
Avatar billede nemlig Professor
20. maj 2011 - 21:21 #7
OK Arne. Tak for denne melding. Jeg har også holdt fast ved ID-feltet.
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