Autor Zpráva
tark
Profil
Mám takový zvláštní problém. Za boha nemůžu PostgreSQL donutit, ať používá indexy u tabulek, kde už jsou nějaká data ... Řeknu to asi takhle - když mám tabulku s daty, přidám index a udělám EXPLAIN SELECT * FROM categories WHERE uid=2, tak se index nepoužívá, ovšem když z databáze vymažu hodnoty (truncate..) a vložím je tam, tak se už index používá..

Nedá se nějak donutit aby indexy používala i u existujících dat? Reindex nefunguje ... :-(
tark
Profil
Na serveru mi to dokonce nefunguje ani když udělám nová tabulka -> přidat index -> vložit data a pořád mi to při explain píše seq scan (= zadny index) :(
djlj
Profil
tark
Asi je to blbost, ale nastavuješ ten index na správný sloupec (sloupce)? :)
Kajman_
Profil *
A nepomůže VACUUM ANALYZE?
tark
Profil
djlj: Podle me ano, mořím se s tím dva dny, na MySQL to fungovalo napoprvé... I když někde jsem četl, že to nemusí fungovat u pár (desítek) položek a já to testoval právě na takovýchto tabulkách, že se na index DB vybodne a prohledá celou db normálně... ;-) Zkusím to na něčem s 5000 řádky ;)

kajman: zkusím...
tark
Profil
Ty indexy jsou zvláštní věc ... Někdy se použijí, někdy nepoužijí atp. Ale už jsem donutil PgSQL nějak je používat, na tabulce s 5000 řádky fungovali napoprvé...

Úspora: cca 0.5ms / 120 ms
pavel stehule
Profil
Indexy nejsou zvlastni, jenom PostgreSQL neni MySQL.

a) indexy se nepouziji pokud by sekvencni cteni bylo rychlejsi nez cteni prostrednictvim indexu. Takze v pripade, ze se cte vic nez 30% tabulky nebo kdyz ma tabulka mene nez 1000 radek (zhruba), tak se index nepouzije.

b) pokud nespustite prikaz analyze, resp. vacuum analyze tak se predpoklada, ze kazda tabulka ma 10000 radek, coz obycejne vede k spatnemu provadecimu planu.

c) pokud si myslis, ze jsi lepsi nez optimalizator, zkus prikaz set enable_seqscan to off; tim penalizujes sekvencni cteni, takze kdykoliv kdy se muze pouzit index tak se index pouzije.

neco malo o optimalizaci dotazu v postgresu najdes v http://postgresql.interweb.cz/index.php/%C3%9Avod_do_PostgreSQL_SQL#Op timalizace

Servus Pavel
Toto téma je uzamčeno. Odpověď nelze zaslat.