webForumDet fria alternativet

Nollställa ID-nummer i tabell (MySQL)

9 svar · 882 visningar · startad av oskob

oskobMedlem sedan maj 20021 558 inlägg
#1

Hej!

Jag har en tabell som tar emot en stor mängd data. Lite då och då läses tabellen av och all ny data kopieras över till en annan tabell och all data som är över en månad gammal tas bort. Detta gör ju att primärnyckeln kommer stiga hela tiden, även om tabellen inte innehåller mer än kanske 100 000 rader.

Finns det något smart sätt att nollställa primärnycklarna utan att ta bort all data?

En int(20) som håller primärnyckeln kan väl innehålla heltal upp till en miljon ungefär? När man kommit dit har ju rader med ID = 1 och en bra bit frammåt tagits bort för länge sedan. Kan man då säga att nästa auto_increment ska bli 1, även om det finns högre nycklar i tabellen på något sätt?

Tack på förhand!

@ndersMedlem sedan juni 200032 969 inlägg
#2

En integer i MySQL kan lagra mycket större tal än så.

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Det finns ingen anledning att återanvända.

mvh

oskobMedlem sedan maj 20021 558 inlägg
#3

Oj vad dum jag är! Jag täntke att en int(20) var 20 bit men det är ju 20 byte!

LarsGMedlem sedan dec. 200012 464 inlägg
#4

I Mysql så är int alltid 4 byte. Även du anger Int(20) så används 4 byte för att lagra värdet.

oskobMedlem sedan maj 20021 558 inlägg
#5

Jag måste alltså ändra till bigint?

@ndersMedlem sedan juni 200032 969 inlägg
#6

Maxvärdet för en unsigned int är 2147483647 enligt länken ovan.
Räcker inte det?

oskobMedlem sedan maj 20021 558 inlägg
#7

Det handlar ju om kanske en 10 000 rader per dag så det är väl skönt med lite headroom. Det lär väl inte vara så påfrestande att köra bigint istället för int?

Fattar den själv om det är unsignet eller signet int eller måste jag ange det någonstans?

colioneMedlem sedan juni 20014 421 inlägg
#8

du väljer unsigned under attributes i phpmyadmin.

The_HulkMedlem sedan juni 20031 837 inlägg
#9

Min/max värde för unsigned/signed int är följande

Typ           Min            Max
unsigned            0    4294967295
signed    -2147483648    2147483647

Så om du får 10 000 poster per dag så klarar du dig iaf i 200 000 dagar innan du behöver oroa dig för att räknare tar slut :D

oskobMedlem sedan maj 20021 558 inlägg
#10

Oj ja det var ju en stund!
Tack för alla svar!

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)