Vertikalni deleni tabulek
Karel Zak
zakkr na zf.jcu.cz
Čtvrtek Říjen 31 08:45:59 CET 2002
On Wed, Oct 30, 2002 at 04:56:56PM +0100, Honza Pazdziora wrote:
> On Wed, Oct 30, 2002 at 10:44:27AM +0100, Martin Majkus wrote:
> >
> > zajímá mě, jestli má cenu vertikálně dělit tabulky, pokud obsahují velká
> > pole variabilní délky. Například, jestli je lepší následující tabulku
> > rozdělit na 2 tabulky a spojit je 1:1 vazbou přes id (tedy ve druhé
IMHO s hledista modelovani DB to neni idealni pokud plati, ze ty data
k sobe patri a jsou dokonce ve vztahu 1:1. Ovsem praxe muze byt jina
:-)
> > tabulce by byly pouze poslední dva sloupce + id).
> >
> > CREATE TABLE clanky (
> > id INTEGER NOT NULL PRIMARY KEY,
> > datum DATE,
> > konec DATE,
> > ...
> > abstrakt TEXT,
> > abstrakt_idx TXT_IDX);
> >
> > Zlepší se potom rychlost vyhledávání ve sloupcích datum a podobně?
>
> Snažil jsem se najít v dokumentaci PostgreSQL a na webu, jak je
> uložen atribut typu TEXT a co je to TXT_IDX, ale neuspěl jsem.
Obecne vsechny datove typy v PostgreSQL pokud jejich pouzity v radce
tabulky presahne velikost stranky kterou server pouziva k ukladani na
disk (8KB defaultne) jsou prohnany systemem TOAST a jsou rozlozeny do
vice internich tabulek na segmenty o velikosti stranky. Plati to jak
pro varchar() tak pro TEXT (ale i numeric apod.). Zaroven je na ty
data pouzita komprese takze rict presne velikost od kdy dojde k
"natoustovani" nelze.
Co je to TXT_IDX nevim.
> Nicméně je třeba zvážit nejen to, že jsou tam dva sloupce s nějakými
> atributy, ale i to, jakým způsobem jsou údaje v té tabulce používány,
Ano, todle je podle mne dulezite.
Pokud je to pouzivano dohromady tak bych to urcite nedelil, ostatne
nejlepsi bude to vyzkouset. Mozna take na zaklade toho jak vypada
typicky select udelat nejake indexy (treba na ty datumy), aby se s
tou tabulkou moc nepracovalo.
Karel
--
Karel Zak <zakkr na zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
Další informace o konferenci Test