Zapytanie - duża ilość danych - rozwiązania
Olek - 01-09-2007 00:16
Zapytanie - duża ilość danych - rozwiązania
Witam Załóżmy że chcę wykonać Select do tabeli która ma milion rekordów i wyświetlać dane w DataGridView. Jak rozwiązujecie takie sytuacje? Chodzi o to że wypełnienie grida trochę trwa. Więc jakie są możliwości? Czy np pytać się o jakąś porcję danych (buforowanie) i jeśli użytkownik chce więcej to wtedy "dopytać" o następne rekordy? Czy może jakieś wątki? Czy może są jakieś mechanizmy w .NEt które to wspierają? Jestem początkujący w .NET :-) Dzięki za sugestie, ewentualnie jakieś linki itp.
Olek - 01-09-2007 00:16
Kurde, sorki grupy mi się pomyliły... ale skoro już tu napisałem, to jakby ktoś miał jakieś sugestie do dzięki za nie.
Użytkownik "Olek" <olekb@interia.pl> napisał w wiadomości news:fb8ki0$87u$1@nemesis.news.tpi.pl... > Witam > Załóżmy że chcę wykonać Select do tabeli która ma milion rekordów i > wyświetlać dane w DataGridView. > Jak rozwiązujecie takie sytuacje? Chodzi o to że wypełnienie grida trochę > trwa. > Więc jakie są możliwości? > Czy np pytać się o jakąś porcję danych (buforowanie) i jeśli użytkownik > chce więcej to wtedy "dopytać" o następne rekordy? > Czy może jakieś wątki? > Czy może są jakieś mechanizmy w .NEt które to wspierają? Jestem > początkujący w .NET :-) > Dzięki za sugestie, ewentualnie jakieś linki itp. >
Bartek Dajewski - 01-09-2007 00:16
=?iso-8859-2?Q?Re:_Zapytanie_-_du=BFa_ilo=B6=E6_danych_-_rozwi=B1zania?=
Cześć.
Użytkownik "Olek" <olekb@interia.pl> napisał w wiadomości news:fb8ki0$87u$1@nemesis.news.tpi.pl... > Witam > Załóżmy że chcę wykonać Select do tabeli która ma milion rekordów i > wyświetlać dane w DataGridView. > Jak rozwiązujecie takie sytuacje? Chodzi o to że wypełnienie grida trochę > trwa.
Proponuję w ogóle nie ładować takich makabrycznych porcji danych do końcówki klienta. Dane zawsze da się je jakoś wstępnie odfiltrować. Człowiekowi najczęściej wystarczy widzieć do kilkudziesięciu, góra do kilkuset pozycji w tabeli. Najlepiej zadać sobie pytanie po co te dane mają się znaleźć przed oczami użytkownika i z tą wiedzą wyselekcjonować je po stronie serwera.
-- Pozdrawiam :-) Bartek
Andrzej Dąbrowski - 01-09-2007 00:16
Użytkownik "Olek" <olekb@interia.pl> napisał w wiadomości news:fb8ki0$87u$1@nemesis.news.tpi.pl... > Witam > Załóżmy że chcę wykonać Select do tabeli która ma milion rekordów i > wyświetlać dane w DataGridView. > Jak rozwiązujecie takie sytuacje? Chodzi o to że wypełnienie grida trochę > trwa. > Więc jakie są możliwości? > Czy np pytać się o jakąś porcję danych (buforowanie) i jeśli użytkownik > chce więcej to wtedy "dopytać" o następne rekordy? > Czy może jakieś wątki? > Czy może są jakieś mechanizmy w .NEt które to wspierają? Jestem > początkujący w .NET :-) > Dzięki za sugestie, ewentualnie jakieś linki itp. Spójrz na to z innej strony - kto z użytkowników przejrzy milion rekordów? Potrzebny podręczny i łatwy w obsłudze filtr Sir Daban
Jarek Stokłosa - 05-09-2007 00:21
Użytkownik "Olek" <olekb@interia.pl> napisał w wiadomości news:fb8ki0$87u$1@nemesis.news.tpi.pl... > Witam > Załóżmy że chcę wykonać Select do tabeli która ma milion rekordów i > wyświetlać dane w DataGridView. > Jak rozwiązujecie takie sytuacje? Chodzi o to że wypełnienie grida trochę > trwa. > Więc jakie są możliwości? > Czy np pytać się o jakąś porcję danych (buforowanie) i jeśli użytkownik > chce więcej to wtedy "dopytać" o następne rekordy? > Czy może jakieś wątki? > Czy może są jakieś mechanizmy w .NEt które to wspierają? Jestem > początkujący w .NET :-)
W adoconnection można wybrać tryb asynchroniczny pobierania danych. Trochę trzeba się o programować aby go obsłużyć ale wynik jest ok. Oczywiście pozostaje kwestia poco ktoś miałby oglądać 1mln rekordów (ale to właśnie można ograniczyć w trakcie ściągania pierwszego 1tys :) )
pozdr
Jarek
=?ISO-8859-2?Q?Cezary_Gr=B1dys?= - 06-09-2007 00:04
Olek napisał(a): > Witam > Załóżmy że chcę wykonać Select do tabeli która ma milion rekordów i > wyświetlać dane w DataGridView. > Jak rozwiązujecie takie sytuacje? Chodzi o to że wypełnienie grida trochę > trwa. > Więc jakie są możliwości? > Czy np pytać się o jakąś porcję danych (buforowanie) i jeśli użytkownik chce > więcej to wtedy "dopytać" o następne rekordy? > Czy może jakieś wątki? > Czy może są jakieś mechanizmy w .NEt które to wspierają? Jestem początkujący > w .NET :-) > Dzięki za sugestie, ewentualnie jakieś linki itp. > > W bazach danych nie stosuje się czegoś takiego jak przeglądanie zawartości. Robi się select z konkretnymi warunkami, bo nikt nie jest w stanie przeglądać milionów wierszy, czy nawet tysięcy. Najlepiej jak zwraca 1 konkretny wiersz.
--
Cezary Grądys <czarek.gradys@cartalia.com>
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
=?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?=
[ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?=
phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?=
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?=
[MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?=
mecze sie i mecze i nic - zapytanie czesciowe
[sql][pgsql] zapytanie sql
zanotowane.pldoc.pisz.plpdf.pisz.plown-team.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|