Ubrzavanje pretrazivanja po bazi

ovako zanima me da li postoji da se nekako ogranici pretrazivanje tj da mi se cijeli postupak ubrza.neki index, nesto.
imam bazu oko 10 000 elemenata koja sadrzi razna imena. ako upisem da mi pretrazi bazu po imenima koja u sebi sadze slovo “a” to nikad nist ne izbaci. za slovo “z” izbaci jer pretpostavljam nije toliko cesto.
stvar sam ubrzala da sam rezultat koji vraca limitirala na 20. (sad nisam ziher kak to radi ali mislim da pretrazuje sve,samo se rezultat ogranici na 20…nisam ziher)
ok igra tu uloga koliko je brza masina.ok je.

al ja bi voljela da nakon sto nadje 20 elemenata da dalje ne pretrazuje po bazi,dal je to moguce?

inace imam ogromna pretrazivanja…po svim nasim zupanijama kojih ima 21 i po objektima (naselje,otoci itd) kojih ima oko 60. kad je ukljuceno sve pretrazivanje,nece izbacit ako upisem da trazi sve kaj ima u sebi slovo “a” isto za “i” i jos neka tak ucestala slova. kad smanjim pretrazivanje,npr po samo 7 zupanija onda je ok.

složi dobro indexe i to je to :slight_smile:

hah a kak,dal ima koji koji ukljucije ako je jedno slovo da pretrazi prvih 20 rezultata a ne sve

[quote=“galatea”]ovako zanima me da li postoji da se nekako ogranici pretrazivanje tj da mi se cijeli postupak ubrza.neki index, nesto.
imam bazu oko 10 000 elemenata koja sadrzi razna imena. ako upisem da mi pretrazi bazu po imenima koja u sebi sadze slovo “a” to nikad nist ne izbaci. za slovo “z” izbaci jer pretpostavljam nije toliko cesto.
stvar sam ubrzala da sam rezultat koji vraca limitirala na 20. (sad nisam ziher kak to radi ali mislim da pretrazuje sve,samo se rezultat ogranici na 20…nisam ziher)
ok igra tu uloga koliko je brza masina.ok je.

al ja bi voljela da nakon sto nadje 20 elemenata da dalje ne pretrazuje po bazi,dal je to moguce?

inace imam ogromna pretrazivanja…po svim nasim zupanijama kojih ima 21 i po objektima (naselje,otoci itd) kojih ima oko 60. kad je ukljuceno sve pretrazivanje,nece izbacit ako upisem da trazi sve kaj ima u sebi slovo “a” isto za “i” i jos neka tak ucestala slova. kad smanjim pretrazivanje,npr po samo 7 zupanija onda je ok.[/quote]

10 000 zapisa je nista za bazu podataka. :slight_smile:

Nisam bas strucnjak za BP, ali mislim da ne mozes ograniciti da ti pretrazivanje stane nakon 10 pronadjenih (osim mozda procedurama i nekim posebnim tehnikama), mozes samo utjecati na broj rezultata koji dobijes kao rezultat upita (ne znam za neke napredne tehnologije pretrazivanja, govorim za klasika sa “LIKE”).
Razmisli malo … kako se moze vratiti prvih 10 rezultata uz nekakvo sortiranje (ili sl.) ako se nemaju svi rezultati. :wink:

U svakom slucaju, obican index ti je sasvim dovoljan (uz limit izlaznih rezultata). Uz to mislim da neces imati nikakvih problema sta se tice performansi. Cisto usporedbe radi, ja sam imao problema u performansama kod spajanja 2. tablice od kojih je jedna imala 10 000 zapisa, a druga 10 000 000 zapisa. I to je bio kompleksan upit u pitanju (2 puta se pretrazivala cijela tablica sa 10 milijuna zapisa).

pa napravila sam limit za izlazne i opet zeza. spajaju se tri tablice…kad su se dve spajale bilo je ok.grr

Po cemu spajas? Kako su tablice indeksirane? Jel mozes staviti tu kako ti izgledaju tablice? Ovako napamet je tesko reci, al cini mi se da ti fali pokoji index. :slight_smile:

Pogledat cu sutra (nadam se) ako ti nitko ne pomogne, ne stignem sad. :slight_smile:

Kao što Ivan kaže, definitivno miriši na nedostatak indexa ili indexi nisu u skladu s upitom.
Daj upit, strukture tablica i PK-ove i dodatne indexe.

Probaj sa Mysql Full Text Search

http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html

joj e ne znam nisam ja radila te tablice, ja se samo spajam na njih. to se i meni cini da trebaju indexi: evo moji upiti

SELECT bla,bla FROM bla1 vcgn11, bla2 cg, bla3 cgn11 WHERE UPPER(cgn11.ime) LIKE UPPER(‘zagreb’)
AND kod IN(17001001,17001002…)
AND _ST_Within(cgn11.geom, ST_Collect_garray(ARRAY[(SELECT cg.geometry FROM complex_geometry_cgn11_24012010 cg WHERE cg.complex_geometry_id=10514),(SELECT cg.geometry from complex_geometry_cgn11_24012010 cg WHERE cg.complex_geometry_id=2845)…]))
AND cg.complex_geometry_id=vcgn11.id
AND cg.complex_geometry_id=cgn11.br
AND vcgn11.id=cgn11.br LIMIT 20

prkey je ID, ovo po cemu se spajaju

evo kak je kreirana jedna tablica:

CREATE TABLE cgn11_24012010
(
br integer,
ime text,
administrativno_podrucje text,
e numeric(10,2),
n numeric(10,2),
grupa text,
tip text,
podtip text,
klasa text,
kod integer,
egn_kod double precision,
egn_kod_index integer,
localkod_index integer,
uid text,
l numeric(13,10),
fi numeric(13,10),
geo_identifikator text,
administrator text,
geom geometry,
CONSTRAINT enforce_dims_geom CHECK (ndims(geom) = 2),
CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) = ‘POINT’::text OR geom IS NULL),
CONSTRAINT enforce_srid_geom CHECK (srid(geom) = 4258)
)
WITH (
OIDS=FALSE
);
ALTER TABLE cgn11_24012010 OWNER TO egn_user;

to je postgresql

evo jos jedna tu ima nekakvih indexa:

CREATE TABLE complex_geometry_cgn11_24012010
(
complex_geometry_id bigint NOT NULL DEFAULT nextval(‘complex_geometry_id_seq’::regclass),
spatial_object_uid text NOT NULL,
geometry geometry NOT NULL,
CONSTRAINT complex_geometry_cgn11_24012010_pkey PRIMARY KEY (complex_geometry_id),
CONSTRAINT complex_geometry_cgn11_24012010_spatial_object_uid_key UNIQUE (spatial_object_uid),
CONSTRAINT enforce_dims_geometry CHECK (ndims(geometry) = 2),
CONSTRAINT enforce_srid_geometry CHECK (srid(geometry) = 4258)
)
WITH (
OIDS=FALSE
);
ALTER TABLE complex_geometry_cgn11_24012010 OWNER TO egn_user;

CREATE INDEX complex_geometry_cgn11_24012010_complex_geometry_id_idx
ON complex_geometry_cgn11_24012010
USING btree
(complex_geometry_id);

CREATE INDEX complex_geometry_cgn11_24012010_geometry_sidx
ON complex_geometry_cgn11_24012010
USING gist
(geometry);

CREATE INDEX complex_geometry_cgn11_24012010_ind
ON complex_geometry_cgn11_24012010
USING gist
(geometry);

CREATE INDEX complex_geometry_cgn11_24012010_spatial_object_uid_idx
ON complex_geometry_cgn11_24012010
USING btree
(spatial_object_uid);

a da koristis inner join za spajanje po kljucu, to bi trebalo biti brze…

Samo nemoj left ili right join posto su oni jako spori ako ima puno upisa…

Ili ako oveo ne pomogne rastavi sve u dva ili vise upita, ovu sam tehniku primjenivao na nekoliko velikih baza i deifnitivno nekad dva upita su i po 100 puta brza od jednog.

zapravo ja ovdje gore uopce ne vidim da je napravljen pr key… ma, jao

Što ti u stvari tražiš???
Imaš ovo: …LIKE UPPER(‘zagreb’)…
imaš i ovo: … IN(17001001,17001002…) …
imaš i ovo: … mplex_geometry_id=10514)…
imaš i ovo: …cg.complex_geometry_id=2845)…

pa da bude otporno na velika i mala slova (kod pretrazivanja, ovisno o tome kaj upisem u textbox) zato sve stavljam u velika slova…

ovo pretrazivanje…kod IN(17001001,17001002…) je pretrazivanje po objektima. svaki objekt(naselje,selo,grad,otok…)ima svoj kod. i kako ja NPR oznacim da mi pretrazi nesto samo po “naseljima” onda mi trazi po odredjenom kodu…

ovaj …ARRAY[(SELECT cg.geometry FROM complex_geometry_cgn11_24012010 cg WHERE cg.complex_geometry_id=10514…)
radi pretrazivanje po zupanijama tj pretrazivanje po geometriji. ak ja oznacim trazi po zagrebackoj i splitckoj zupaniji onda imam u ARRAYU dva selecta sa tim kodovima (complex_geometry_id) koja predstavljaju zupaniju po kojoj ocu pretraziti

[quote=“galatea”]pa da bude otporno na velika i mala slova (kod pretrazivanja, ovisno o tome kaj upisem u textbox) zato sve stavljam u velika slova…

ovo pretrazivanje…kod IN(17001001,17001002…) je pretrazivanje po objektima. svaki objekt(naselje,selo,grad,otok…)ima svoj kod. i kako ja NPR oznacim da mi pretrazi nesto samo po “naseljima” onda mi trazi po odredjenom kodu…

ovaj …ARRAY[(SELECT cg.geometry FROM complex_geometry_cgn11_24012010 cg WHERE cg.complex_geometry_id=10514…)
radi pretrazivanje po zupanijama tj pretrazivanje po geometriji. ak ja oznacim trazi po zagrebackoj i splitckoj zupaniji onda imam u ARRAYU dva selecta sa tim kodovima (complex_geometry_id) koja predstavljaju zupaniju po kojoj ocu pretraziti[/quote]

Jezuš i Marija :slight_smile:


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja