Maybaygiare.org

Blog Network

Törölje az összes adatot egy MySQL táblában

a MySQL a világ legnépszerűbb nyílt forráskódú adatbázisa, amelyet sebességéről és megbízhatóságáról ismernek el. Ez a cikk azt vizsgálja, hogyan törölheti az összes adatot a MySQL adatbázis-táblából, és hogyan befolyásolja az automatikus növekményes mezőket.

törölje és csonkolja

kétféle módon törölheti az összes adatot a MySQL adatbázis táblában.

TRUNCATE TABLE tablename; ez nagyon gyorsan törli az összes adatot a táblázatban. A MySQL-ben a tábla ténylegesen leesett és újra létrehozásra került, így a lekérdezés sebessége. A visszaadott MyISAM táblák törölt sorainak száma nulla; az INNODB esetében a tényleges törölt számot adja vissza.

DELETE FROM tablename; ez törli az összes adatot a táblázatban, de nem olyan gyors, mint a “csonka táblázat” módszer használata. A MySQL-ben >= 4.0 A törölt sorok száma visszatér; a MySQL 3.23-ban a visszaadott szám mindig nulla.

automatikus növekmény oszlopok a MyISAM táblákhoz

Ha a MyISAM táblában van egy automatikus növekmény elsődleges kulcs oszlop, az eredmény kissé eltér attól függően, hogy melyik törlési módszert használja. A “csonka táblázat” módszer használatakor az automatikus növekmény mag értéke visszaáll 1-re. A “Törlés innen” módszer használata esetén az automatikus növekmény mag marad, mint korábban (pl. ha az utoljára beillesztett rekord automatikus növekmény mezője 123 volt, akkor a következő beillesztett rekord 124-re lesz állítva).

vegye figyelembe, hogy ez igaz a MySQL-re > = 4.0; a MySQL 3.23 Truncate man oldalának olvasásából ugyanúgy működik, mint a Törlés, ami azt jelentené, hogy az automatikus növekmény mag nem áll vissza. Jelenleg nincs 3.23 adatbázisom a teszteléshez, így ezt nem tudom megerősíteni.

automatikus növekmény oszlopok INNODB táblákhoz

INNODB táblákhoz, függetlenül attól, hogy a” csonka tábla “vagy a” Törlés innen ” módszert használja, az automatikus növekmény mező nem áll vissza. Ha 5 rekordot illesztett be egy új táblába, majd törölte az összes rekordot, és beillesztett egy másik rekordot, a mező értéke 6 lenne, függetlenül attól, hogy melyik módszert használta.

frissítés 17 Feb 2009: eredetileg ezt a bejegyzést írtam, amikor a MySQL 4.0 volt a jelenlegi verzió. Most teszteltem a fentieket egy INNODB táblán a MySQL 5.0 használatával, és a TRUNCATE használatával visszaállítja az automatikus növekmény mezőt az alapértelmezettre. Tehát vagy a viselkedés megváltozott egy bizonyos ponton, vagy tévedtem, amikor a fenti állítást tettem.

biztos benne, hogy törölni szeretné az összes adatot?

az adatbázis összes adatának törlése előtt győződjön meg arról, hogy Valóban törölni kívánja az összes adatot. Gyakran először fizet a ” SELECT * FROM tablename “vagy a” SELECT COUNT(*) FROM tablename ” előtt, hogy ellenőrizze, hogy valóban biztonságos-e az összes adat törlése. Lehet, hogy valóban valami olyasmit szeretne csinálni, mint a “Törlés a táblanévből, ahol foo =” bar “” helyett.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.