Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 2.809 pregleda

Najnovija ↓

Kako izdvojiti samo neke zapise iz baze 08.01.2013. u 20:23 · pre 168 meseci #1
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
Re: Kako izdvojiti samo neke zapise iz baze 08.01.2013. u 20:34 · pre 168 meseci #2
Pitanje samo jedno:pod kojom bazom ti je web aplikacija?
Potpis
"Ne menjaj nesto sto te sasvim dobro sluzi, ne trazi leba preko pogace" - Aleksandar Andrijevic
Re: Kako izdvojiti samo neke zapise iz baze 09.01.2013. u 10:37 · pre 168 meseci #3
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)
Potpis
gramatika srpskog jezika
testovi iz srpskog jezika
jezičke nedoumice
Re: Kako izdvojiti samo neke zapise iz baze 09.01.2013. u 12:38 · pre 168 meseci #5
@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.
Potpis
gramatika srpskog jezika
testovi iz srpskog jezika
jezičke nedoumice
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme