Hej! För att rensa bort det "döda" utrymmet i databasen välj "komprimera och reparera" under Verktyg/Databasverktyg inne i Access när du har databasen öppnad. Det är så att databasen växer i block. Så om vi säger hypotetiskt att varje block är 100k så kommer alltså databasen växa 100k så fort man passerar 100k upp till 200. Likaså om du har index måste dessa ju ta plats någonstans och då kanske om du indexerat med många nycklar av tabellens fält räka med ytterligare en dubbling där. Varför ta bort och skapa tabellerna? Varför bar inte ta bort alla poster? Ja det kan man ju undra :-) Växer omotiverat i storlek
Jag har utvecklat ett program för att spara och söka recept i en databas. Programmen är skrivna i Java och eftersom det är till mig själv har jag använt Access 2000. Det är bara en liten enkel databas, består av 3 tabeller: Recept, Kategori och Grupp.
Från början har jag en tom databas och sen har jag gjort ett program som skapar tabellerna och lägger in 5-6 poster i tabellerna Kategori och Grupp. Det här programmet kollar även om tabellerna redan finns, skulle de göra det så tar programmet bort de gamla tabellerna och skapar nya.
Nu under utvecklings fasen har jag kört det här programmet flera gånger och har då upptäckt följande fenomen. Att varje gång databasen rensas från gamla tabeller och data och skapar nytt så ökar databasen ca 200 kb i storlek. Kör man programmet 3- 4 gånger har man en databas som är nästan 1 MB stor och innehåller 14-15 poster, sjukt. Alltså måste ju databasen på nåt vis behålla gammal data som inte existerar längre i minnet!
Nu finns det väl i och för sig ingen anledning till att köra det här programmet mer än en gång, men det skulle ändå vara roligt att höra ifall det är någon som har någon förklaring till detta.
KristinaSv: Växer omotiverat i storlek
Sv: Växer omotiverat i storlek
Precis som sades. Genom att komprimera så städar man om allt data så de optimalt uppfyller alla block med data precis som defrag. Det är faktiskt samma sak med SQL-server och Oracle. Det är ett sätt att allokera plats i intervall istället för att göra detta varje gång data skrivs, sparas eller uppdateras.Sv: Växer omotiverat i storlek
Sv: Växer omotiverat i storlek
Men det beror på att det lilla programmet för att skapa tabellerna var egentligen till bara för det.
Själva "recept" programmet är kostruerat som en 3-skikts lösning där varje tabell har sin egen klass med frågor mot databasen. Dessa klasser är konstruerade efter mönstret Singleton och när jag gjorde dem som la jag in kod för bl.a skapa och ta bort tabellen.
Därför använde jag den koden som redan fanns istället för att lägga till ny som bara skulle användas under utvecklingsfasen.
Så det beror egentligen bara på ren bekvämlighet :-)
Kristina