24.10.2014, Vladimír Klaus, navštíveno 3707x

MS Access
SQL

Někdy se může přihodit situace, kdy se k vám dostane velmi velká databáze, třeba mající přes 900 MB. Vzhledem k tomu, že při otevření takové databáze v aplikaci se většinou načtou i všechna data, může být pak obtížné s nimi ještě dále pracovat, protože často dochází k chybě "Out of Memory". Proto je někdy vhodné databázi, resp. tabulku rozdělit na polovinu.

Začněte tím, že si původní databázi zkopírujte do souborů Data1.mdb a Data2.mdb a otevřete si tu první kopii.

Nejprve se asi podíváte, kolik je v tabulce záznamů. Odhadnete polovinu - v tomto případě jde o to, že je tabulka/databáze moc velká, nikoliv o nějaké přesné určování poloviny. V našem případě má tabulka přes 110 000 záznamů.

A napíšete dotaz, který horních 55 tisíc smaže. Bude to chvilku trvat, ale rozhodně méně, než kdybyste si těch 55 tisíc vyfiltrovali, označili a stiskli DEL.

DELETE FROM
  (SELECT TOP 55000 *
  FROM Clanky
  ORDER BY ID DESC)

Jak vidíte, i samotný Access má s takovým příkazem jisté obtíže.

Jak rozdělit tabulku na dvě poloviny

Nakonec ale zobrazí onen potvrzovací dotaz.

Jak rozdělit tabulku na dvě poloviny

Poté si zobrazíte tabulku a podíváte se na její poslední ID, což je v našem případě 56749.

Jak rozdělit tabulku na dvě poloviny

Nyní si otevřete druhou databázi (Data2.mdb) a napište druhý mazací dotaz, který je už mnohem jednodušší.

DELETE FROM Clanky
  WHERE ID<=56749

I zde budou zobrazeny výše uvedené dotazy, i když s jiným počtem.

Jak rozdělit tabulku na dvě poloviny

Samozřejmě nezapomeňte na závěr obě databáze zkomprimovat (viz menu Soubor), protože bez toho budou na disku zabírat stále stejně velký prostor jako na začátku.

Jak rozdělit tabulku na dvě poloviny