Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako izdvojiti samo neke zapise iz baze

[es] :: .NET :: ASP.NET :: Kako izdvojiti samo neke zapise iz baze

[ Pregleda: 2094 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Neznalica_sa_ugla
split

Član broj: 83282
Poruke: 390
*.st3.cable.xnet.hr.



Profil

icon Kako izdvojiti samo neke zapise iz baze08.01.2013. u 19:23 - pre 136 meseci
Nakon malog razmišljanja , mislim da je ipak mjesto ovome pitanju ovdje ne u bazama,jer ovo treba rješiti programski ne na upitu. Nami imam stranicu http://geocomerce-nekretnine.hr . Klikom na botun "prikaži" prikaže sve objekte koji su dosada unešeni . ( Slična stvar i sa Galerijom ,al da jedno pratimo) Ovo je odrađeno onako , kako kaže profesija, ali ja uvjek želim više. Recim da će u nekom budućem trenutku biti par desetaka hiljda (???) objekata (rekao sam recimo). i kako ja odjednom prikazujem samo k-objekata(12) i onda listam kao stranice . Problem je u tome što ja ne želim iz baze uzimati sve nego samo 1-12 sa (1 stranicu) (13-24 - 2 stranica ) ( 25-36 - 3 stranica ).... i tako redom .Primjetite da lijevo postoji izbornik , po mjestu,lokaciji ,tipu objekta ,povšini i cjeni , znači ja unaprijed ne znam broj objekata koje treba prikazati , nego iz baze napunim listi , pa i prikazujem . Nodostatak je u tome , što i kada trebam prikazati (recimo 25-36 samo 12 , ja punim cijelu listu , što želim izbjeći . Kakav vi ovdje imate pristup . Saslušaću svaki savjet . Hvala
 
Odgovor na temu

aca andrijevic
aka LoGaN
Nis

Član broj: 35450
Poruke: 347
217.16.142.*

ICQ: 325309560


+2 Profil

icon Re: Kako izdvojiti samo neke zapise iz baze08.01.2013. u 19:34 - pre 136 meseci
Pitanje samo jedno:pod kojom bazom ti je web aplikacija?
"Ne menjaj nesto sto te sasvim dobro sluzi, ne trazi leba preko pogace" - Aleksandar Andrijevic
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
82.117.199.*

Sajt: www.dcaric.com


+26 Profil

icon Re: Kako izdvojiti samo neke zapise iz baze09.01.2013. u 09:37 - pre 136 meseci
Ajde da kažemo da će u jednom trenutku biti milion objekata ili 10 miliona, a ne samo 10 hiljada :)

Iz kog razloga želiš da prikažeš sve objekte? Osim ako ne želiš da dozvoliš nekome da pokupi sve podatke iz tvoje baze...
Možeš da limitiraš pretragu na 500 rezultata i onda ti je lako da napraviš paginaciju:
Code:
var list = (from x in .... where ....).Take(500).ToList();

500 objekata nije mnogo da učitaš u memoriju i sa njima možeš lako da odradiš Skip() i Take().

Ukoliko baš hoćeš da prikažeš sve podatke onda je nezgodno da ih sve učitaš u memoriju već moraš da kreiraš 2 upita. Sa jednim ćeš dohvatiti ukupan broj rezultata koji zadovoljavaju uslov pretrage, a sa drugim ćeš dohvatiti samo set podataka:
Code:
var count = (from x in .... where ....).Count();
...
var list = (from x in .... where ....).Skip(...).Take(...).ToList();


Kada radiš pretragu sa velikim setom podataka, onda je zgodno da koristiš biblioteke koje su upravo tome namenjene:

- Lucene.NET ukoliko ti treba embedded rešenje koje zahteva samo .NET framework
- Solr.NET ukoliko ti treba više enterprise rešenje (zahteva Javu)

 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Kako izdvojiti samo neke zapise iz baze09.01.2013. u 10:57 - pre 136 meseci
Pa, skip je mogao da uradi u prvoj liniji pre take (prvi kod).
 
Odgovor na temu

Dejan Carić
Oslo, Norway

Član broj: 230976
Poruke: 232
82.117.199.*

Sajt: www.dcaric.com


+26 Profil

icon Re: Kako izdvojiti samo neke zapise iz baze09.01.2013. u 11:38 - pre 136 meseci
@Shadowed,

Možda nisam bio dovoljno jasan kod prvog primera :(
Da bi napravio paginaciju, mora da zna broj objekata koje treba da prikaže (mora da izvrši Count naredbu / upit), kao i da izvši upit za prikazivanje podataka na jednoj stranici (skip i take).

Ukoliko se radi o složenijem upitu sa mnogo podataka u bazi, izvršavanje jednog upita može trajati 2,3,4 sekunde...
Ako je potrebno 3 sekunde da se izvrši Count i isto toliko vremena da se izvrši upit sa Skip / Take, to je ukupno 6 sekundi. Ne znam da li baza ovde može da izvrši neku drastičnu optimizaciju i ubrza drugi upit na osnovu prvog. Ako u startu odradi Take(500), uštedeo je 3 sekunde za Count() i samim tim će učitavanje stranice trajati približno 3 sekunde kraće.
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: Kako izdvojiti samo neke zapise iz baze

[ Pregleda: 2094 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.