Autor | Zpráva | ||
---|---|---|---|
rroommaann Profil |
#1 · Zasláno: 20. 4. 2010, 00:22:31
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 |
#2 · Zasláno: 20. 4. 2010, 02:08:25 · Upravil/a: kelvin
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 |
#3 · Zasláno: 20. 4. 2010, 02:44:48
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 |
#4 · Zasláno: 20. 4. 2010, 08:04:00
TomášK to vystihl :) diky
@kelvin: chtel bych videt tu stranku kde bude treba jen vypis cisle jedna az milion :) v <table> |
||
unlucky Profil |
#5 · Zasláno: 20. 4. 2010, 20:32:13
TomášK:
muzes pls vysvetlit jak je to s tim "mit dobre indexy"? dik |
||
Kajman_ Profil * |
#6 · Zasláno: 20. 4. 2010, 22:55:10
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 |
#7 · Zasláno: 21. 4. 2010, 00:09:54
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 |
#8 · Zasláno: 21. 4. 2010, 08:51:26
dekuji za podnetne informace
|
||
bohyn Profil |
#9 · Zasláno: 21. 4. 2010, 15:37:39 · Upravil/a: bohyn
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 |
#10 · Zasláno: 22. 4. 2010, 09:41:38 · Upravil/a: __construct
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 |
||
Časová prodleva: 16 let
|
0