Autor | Zpráva | ||
---|---|---|---|
noName Profil * |
#1 · Zasláno: 22. 5. 2012, 14:51:52
Zdravím, začal jsem číst kapitolu o návrhu databáze a trošku si to testovat různě testovat. Zajímají mě tyto věci:
1) Je tento návrh tabulek a jejich propojení správný? 2) Dočetl jsem se něco o indexech a hlavně o fulltextovém indexu, který může být pouze u innoDB. Jelikož využívám innoDB a někdy bych mohl fulltextový index potřebovat, je vhodné mít třeba 2tabulky innoDB a jednu MyISAM? Díky za tipy a rady! |
||
Kajman Profil |
#2 · Zasláno: 22. 5. 2012, 15:19:54
1) V tabulce friend je id zbytečné, nechte primární klíč jako kombinaci následujících dvou sloupců.
noName: „který může být pouze u innoDB“ Právě naopak, může se použít u MyISAM. „někdy bych mohl fulltextový index potřebovat, je vhodné mít třeba 2tabulky innoDB a jednu MyISAM?“ Asi to řešte, až ho budete potřebovat. Pak si můžete udělat pomocnou tabulku MyISAM, kde bude např. jen id řádku a duplictní sloupec s textem pro indexaci. Tuto tabulku můžete např. aktualizovat pomocí triggerů. |
||
noName Profil * |
#3 · Zasláno: 22. 5. 2012, 15:27:30
Kajman:
„Právě naopak, může se použít u MyISAM.“ Jo, to jsem přehodil a nevšiml jsem si toho, omlouvám se. No já dneska prováděl "testy" kdy jsem si dal do db 25 000 řádků a zkoušel jsem je vypisovat a trvalo to v Admineru 0, 192s (s tím, že mi zamrzl prohlížeč, ale to je spíše pomalým pc) a při selectu přes dibi cca 3s - výpis všech řádků a všech sloupečků (*). Pak jsem zkoušel i vyhledávání v textu s a bez fulltext indexu a nějaký extra znatelný rozdíl tam nebyl. Je to málo záznamů aby šel poznat rozdíl při použití indexů? |
||
Kajman Profil |
#4 · Zasláno: 22. 5. 2012, 15:35:58
Pro testování nezapomeňte vypnout cache
select sql_no_cache ... Abyste nemusel vypisovat všechny položky, dejte omezení do where, ale jen si vypište počet vyhovujících řádků (count(*)). |
||
Časová prodleva: 12 let
|
0