Autor Zpráva
rroommaann
Profil
Prosím o takové rady, tipy a zásady (snad se bude hodit i pro ostatní) na co dát pozor a co dodržovat při práci s tabulkou o několika miliónech řádků
kelvin
Profil
Tabulka o několika milionech řádků, publikovaná přes web, je nesmysl. Bavíme se o stejné <table>? Rozdělil bych to na víc stránek. Co to bude?
--
Aktualizace: omlouvám se, blbnu, nemám to řazené dle sekcí :(.
TomášK
Profil
Vzhledem k tomu, že dotaz je v sekci databáze, bavíme se patrně o databázové tabulce. Je důležité mít dobré indexy, ani málo, ani moc, hlídat složitost dotazů, v případě potřeby používat EXPLAIN. Mezi pomalé klauzule patří DISTINCT, ORDER BY nebo GROUP BY.
rroommaann
Profil
TomášK to vystihl :) diky

@kelvin: chtel bych videt tu stranku kde bude treba jen vypis cisle jedna az milion :) v <table>
unlucky
Profil
TomášK:
muzes pls vysvetlit jak je to s tim "mit dobre indexy"?

dik
Kajman_
Profil *
Aby byly užitečné při obvyklém dotazování nad tabulkou a nezpůsobovaly nepřiměřenou režii při úpravách tabulky či nezabíraly zbytečně místo na dísku.
TomášK
Profil
Nedokážu to vysvětlit na pár řádků. Zálěží na konkrétních dotazech, poměru čtení/vkládání/mazání, typu dat... základy jsou třeba ve wiki, http://cs.wikipedia.org/wiki/Index_(databáze) jsou tam i užitečné odkazy.
rroommaann
Profil
dekuji za podnetne informace
bohyn
Profil
Trochu obecnější rady:
- používat LIMIT pokud je to možné
- v některých případech je rychlejší vynechat index(y) pro některé SELECTy
- používat transakce při vkládání záznamů do databáze (pokud jsou podporovány)
- při hromadných UPDATEch a INSERTech může být rychlejší zahodit indexy a potom je znovu vytvořit.
__construct
Profil
Pokiaľ sa jedná o MySQL tabuľku je tiež veľmi dôležitý výber engineu - MyISAM/InnoDB. Samozrejme, že to záleží na čo sa tá tabuľka bude používať.
MyISAM:
- je rýchly na časté čítanie
- nie je dobrý pokiaľ do tabuľky často zapisuje (pomalý)
- pokiaľ updateuješ alebo vkladáš čo len jednu bunku zamkne sa celá tabuľka a žiaden proces z nej nemôže dokonca ani čítať dokiaľ sa zápis nevykoná
- podporuje FULLTEXTové vyhľadávanie
- pri povolenom NULL MyISAM si na každý stĺpec rezervuje extra bit
- pokiaľ často používaš dotazy typu SELECT COUNT(*) MyISAM je vhodný kandidát

InnoDB:
- je zležitejší engine takže pre malé apolikácie je pomalší ako MyISAM
- podporuje tzv. "row-based locking" tzn. že pri zápise sa zamkne iba riadok (narozdiel od zamknutia celej tabuľky pri MyISAM)
- podporuje FOREIGN KEY (vzdialené kľúče)
- podporuje TRANSACTIONs

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: