MySQL-3.23.21-beta a BerkeleyDB tables

Karel Zak zakkr na zf.jcu.cz
Sobota Červenec 15 13:45:40 CEST 2000


On Fri, 14 Jul 2000, Honza Pazdziora wrote:

> On Fri, Jul 14, 2000 at 12:42:31PM +0200, Karel Zak wrote:
> > 
> >  Tabulku uvnitr nejake funkce asi udelas, ale moc nechapu kdy ji chces 
> > delat. Tedy to "mezitim" a neni mi jasne jak by se tato nova tabulka
> 
> Pokud mam slozity dotaz
> 
> 	select neco from joinovane tabulky where spousta podminek
> 		a jedna z nich je ten fulltextovy test
> 		contains(sloupec, 'vyraz') > nejake skore
> 
> tak typicky chci primarne hledat podle toho fulltextu a pak joinovat
> se zbytkem. Tedy nejriv chci najit mezi milionem zaznamu ty tri, ktere
> odpovidaji vyrazu 'karel zak and mysql' a pak s tim vysledkem neco
> delat.
> 
> Pokud budu tu funkci volat normalne, tak ji budu volat pro vsechny
> zaznamy, miliony. No good. Cili se snazim smerovat k tomu, ze by dosl
> ke transformaci toho puvodniho selectu na select
> 
> 	select neco from joinovane tabulky where spousta podminek
> 		a id in ( select id from ta pomocna tabulka )
> 
> A teprve tento dotaz by se pustil. Predtim by samozrejme nekdo musel
> udelat tu tabulku a naplnit ji vysledkem toho fulltextoveho hledani.
> Ale dalsi beh uz by byl rychly.

 Asi nejkorektnejsi by to bylo jak psal Pavel J. --- udelat to na urovni 
optimizeru (sakra to neni poradne ani v ang. ani cesky :-). Jinak
pochopitelne funkce bude volana pro kazdy zaznam, nadruhou stranu to muze
byt udelane tak, ze pri prvnim zavolani by si ta funkce udelala pozadovanou
temp tabulku a pri dalsich volanich by uz cerpala z ni.


> Myslel jsem, ze pokud vis, kde v PostgreSQL se prechazi od toho
> vstupniho retezce SQL k rozparsovane strukture, tak pote, co je
> rozparsovano, by melo byt mozno zavolat to externi plneni te pomocne
> tabulky a pak zmenit tu rozparsovanou strukturu tak, aby brala data
> z ni.

"The PostgreSQL path of query":

	1/ parser 
	2/ transformace struktur na query tree
	3/ rewriter (apikace view, rules..)
	4/ planner
	5/ executor 

 Todle plati pro SELECT/INSERT/DELETE/UPDATE, ostatni prikazy maji jako bod
3/ rovnou vykonani prikazu (napr. CREATE..)

 Nekam az pred executor jsou to celkem autonomni a dost obecne struktury.

V soucasne dobe vim o cca 4 lidech schopnych neco *vice* predelavat na 
bodech 3/4/5/ ...

 Trosku problem bych vydel v nekoncepcnosti toho provedeni, ze nekde na
urovni bodu 3-4 by se melo uz neco vice delat s daty (ta temp tabulka)
IMHO to patri az do executoru. Ale zas tak moc tomu nerozumim :-)

(Ja se hrabu spise v pameti PG a trosku v date/time..)

> Je nejake URL? Vzhledem k tomu, jak ma PG blbe udelane blby nyni, tak
> bych tomu az tak moc neduveroval ;-)

 Co ma spatne udelane?

						Karel



Další informace o konferenci Databases