[ MarkoBalkan @ 19.10.2007. 15:06 ] @
| imamo bazu sa 300000 redova.
ucitavanje u datagrid traje 17 sekundi.
dali se moze to nekako opimizirati recimo barem na pola?
tolika količina podataka nam ne treba osim u nekim specijalnim slucajevima kao sto je rječnik,
gdje su prikazane sve rijeci.
pa kad korisnik pokreće svaki puta aplikaciju da ne mora čekati 17 sekundi da se sve prikaže. |
[ goranvuc @ 19.10.2007. 15:10 ] @
Pa najjednostavnije je da ih prikazes prefiltirane po nekom smislenom kriterijumu (zavisi od problematike, npr. promene u zadnjih nedelju dana) po default-u, a da ipak das neku mogucnost korisniku da (ako bas hoce) moze da dobije kompletne podatke.
[ momsab @ 19.10.2007. 15:12 ] @
ovo veze nama sa AoP
ovo je za BP... kako neki ljudi omase to mi nije jasno..
[ MarkoBalkan @ 19.10.2007. 15:14 ] @
Citat: momsab: ovo veze nama sa AoP
ovo je za BP... kako neki ljudi omase to mi nije jasno..
kako to sa kodom izvesti?
da mi se u datagridu prikaze najvise za 8 sekundi?
[ goranvuc @ 19.10.2007. 15:17 ] @
Pa nema to veze sa kodom, tj. ima ali sa SQL kodom ;) Ubaci kriterijum u WHERE deo od SQL naredbe koja ti generise set podataka. Ako pitas koji kriterijum - ne znam, jer nisi bas naveo o cemu se radi, a i onda ova tema stvarno treba da predje u forum "Baze podataka"
[ jablan @ 19.10.2007. 15:23 ] @
Šta korisnik može da radi sa 300k redova u datagridu? Da skroluje?
[ MarkoBalkan @ 19.10.2007. 15:34 ] @
Citat: jablan: Šta korisnik može da radi sa 300k redova u datagridu? Da skroluje?
naveo sam primjer kao rječnik, gdje se učitaju sve rijeci.
[ jablan @ 19.10.2007. 15:46 ] @
Ok, rečnik, šta će korisniku 300k reči u gridu?
[ MarkoBalkan @ 19.10.2007. 15:59 ] @
ja imam neki rječnik.ali zato kad pišem u textbox neku riječ, automatski filtrira i ostaju riječi koje imaju samo taj dio.
[ X Files @ 19.10.2007. 16:12 ] @
@MarkoBalkan
Nisi naveo dovoljno detalja u vezi tog problema.
Koje okruženje koristiš?
Koju bazu koristiš?
Kako je projektovana baza (model) i kako su postavljeni indeksi (ovo je bitno zbog pretrage)?
Koji datagrid koristiš (oni specifični za baze najčešće ne učitavaju sve)?
Koju tehnologiju za pristup bazi koristiš?
Pouzdano znam da filtriranje baze od 300,000 slogova SQL-om traje jako kratko, ako su indeksi postavljeni ispravno.
Čak i SQL filtriranje tipa ...LIKE '%nesto%' ne traje večnost.
(ovu temu ću prebaciti u odgovarajući forum)
[ MarkoBalkan @ 19.10.2007. 16:20 ] @
.net, mysql 5.0.
meni ne treba filtriranje.
meni treba da mi se 300000 redova u datagridview u .net-u(C#) prikaže što prije.
meni sada prikazivanje traje oko 17 sekundi.
meni treba barem na pola ako je moguće.
[ jablan @ 19.10.2007. 16:45 ] @
Uvek radi top 20 i ponovo select uvek kad korisnik otkuca taster (sa delayem od pola sekunde).
300k slogova u gridu je no-no sa bilo koje tačke gledišta. 17 sekundi je još i najmanji problem.
[ toxi_programer @ 19.10.2007. 21:51 ] @
Nije da se razumem ali evo predlog kako da se ne učitava sve.
Rekao si da treba da se izlistaju sve reči ali da to traje duga a i da imaš textbox koji će da filtrira podatke kako novi text u njega bude unošen. Namesti da, ako je taj textbox prazan ne prikazuje ništa već da počne da dobavlja podatke tek ako je tekst duži od jednog karaktera.
Takođe, možda bi bilo OK da se prikaže recimo 100 prvih nađenih rezultata a da za ostale korisnik mora da klikne na dugme "sledećih sto reči...". Na taj način ako korisnik unese samo "a" dobiće prvih 100 reči po azbučnom redu, pa za sledećih sto mora da klikne na to "next". Tako je preglednije a i valjda rešava problem. Samo je opet puno da se prikaže 100 reči.
Ja bih tako nešto uradio. 
[ toocold @ 21.10.2007. 10:24 ] @
Ok, pazi ovako, ukoliko ti baza brze vrati podatke onda je problem u prikazu u DataGridu,
ukoliko koristis binding, ukini binding dok skupljas podatke i bindujes ih na gdid, a ukoliko ti baza sporo vraca podatke,
postavi indekse na tabelu, zavisi sve koja je baza. Postavi kod pa mozda neko moze da ti pomogne.
[ makaze @ 21.10.2007. 17:51 ] @
Developer Express ima fina rješenja za GridView - tj. razvili su sopstvenu kontrolu koja je daleko moćnija od klasične. Takođe, čini mi se da sam jednom čitao o optimizaciji učitavanje velikih setova podataka na njihovim stranicama. Pogledaj - http://www.devexpress.com/
[ MarkoBalkan @ 21.10.2007. 20:48 ] @
Citat: toocold: Ok, pazi ovako, ukoliko ti baza brze vrati podatke onda je problem u prikazu u DataGridu,
ukoliko koristis binding, ukini binding dok skupljas podatke i bindujes ih na gdid, a ukoliko ti baza sporo vraca podatke,
postavi indekse na tabelu, zavisi sve koja je baza. Postavi kod pa mozda neko moze da ti pomogne.
problem je u datagridu.
baza vrati cca. za 1,5 sekundu.
sporo se prikazuje.
[ logic_rabbit @ 22.10.2007. 09:03 ] @
Umjesto dataseta koji sigurno trenutno koristis koristi List<T> ili neku drugu genericku kolekciju i datagridview binduj na nju i dobices prikaz za 4-5 sekundi tolikog broja redova.
[ MarkoBalkan @ 22.10.2007. 09:43 ] @
Citat: logic_rabbit: Umjesto dataseta koji sigurno trenutno koristis koristi List<T> ili neku drugu genericku kolekciju i datagridview binduj na nju i dobices prikaz za 4-5 sekundi tolikog broja redova.
jel mozes dati primjer.
nisam koristio dataset, nego sve preko storne procedure.
[ Astek @ 22.10.2007. 11:16 ] @
I pored svega nije mi jasna potreba za 300000 record-a u gridu.
Ako hoćeš da to radi brži ograniči rezultat SELECT naredbe sa WHERE...
[ logic_rabbit @ 22.10.2007. 13:11 ] @
Za sta si zakacio DatagridView?
Za dataset,datatable ili List<T> ili nesto drugo?
[ MarkoBalkan @ 22.10.2007. 13:15 ] @
pa preko storne procedure.i ucitani podaci u datatable.
[Ovu poruku je menjao MarkoBalkan dana 23.10.2007. u 12:02 GMT+1]
[ MarkoBalkan @ 22.10.2007. 14:34 ] @
[ logic_rabbit @ 23.10.2007. 15:12 ] @
Umjesto u datatable ucitaj podatke u List<T> ili neku drugu genericku kolekciju i dobices trazene performanse.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|