FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Har en antal tabeller (ganska många egentligen) som byggs på med en ny rad med jämna mellanrum. För att spara diskutrymme och snabba upp access vill jag då och då rensa bort rader ur tabellerna, och då ett antal av de äldsta (första) raderna.
Det blir väl att använda en vanlig DELETE Kod:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_definition] [ORDER BY ...] [LIMIT row_count] Vill höra om det fungerar att använda LIMIT utan WHERE för att åstadkomma detta? Alltså typ Kod:
DELETE FROM tbl_name LIMIT 200 Citat:
![]() Eller finns något smartare sätt att göra ett sånt här underhåll på? |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Medlem
|
Du kan använda limit, men utan löpande id eller datum kan du inte vara säker på att rätt rader försvinner. Det är just det här som är anledningen till att man har datum och/eller löpande id.
|
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Var rädd för det. Tabellerna borde som sagt inte se ut så där, men de är skapade i en annan miljö (lokal pc) och när jag lyfte ut detta på webben ville jag hålla tabellerna intakta. Det var det kortsiktigt enklaste då, men nu inser jag att jag borde gjort om strukturen...
Finns något sätt att räkna ut vilka rader som tas bort med en limit utan where? Tabellerna är skapade och först fyllda med rader genom import av en textfil, och därefter har nya rader skapats på normalt sätt med INSERT INTO i SQL. EDIT: Förresten (utan att läsa på..), kan jag nu i efterhand lägga till ett idfält med auto_increment till dessa tabeller? |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Svarar mig själv med ett visst, det går ju utmärkt.
![]() Men ett problem är att genom att lägga till ytterligare ett fält så gör jag tabellen 20% större, vilket motverkar själva avsikten med hela proceduren. Jag skulle tro att en DELETE med LIMIT utan WHERE borde ta bort rätt rader, de första, eftersom det gick att lägga till ett idfält som numrerade raderna i korrekt ordning. Då borde ju även limit ta dem i rätt ordning, tycker man... ![]() |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Mycket flitig postare
|
Fast sen är det ju så att bara för att filen blir större behöver det inte alls betyda att den blir långsammare, det kan vara tvärt om...
|
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
Hmm, jo, DELETE med limit tar bort rätt rader, men när man sedan gör en INSERT INTO så hamnar dessa först i de "tomma luckorna". Så kan jag inte ha det. Det verkar som jag måste åstadkomma ett fält med löpande id för att göra detta. Datat är nämligen kronologiskt, och kan inte stoppas in var som helst... Nu får man sota för att man lat tidigare.
![]() |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Citat:
|
||
![]() |
![]() |
Svara |
|
|