🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #82406

Re: Co szybsze - zapytanie SQL czy filtrowanie

#82406
From: Pancio
Date: Mon, 10 Nov 2014 09:37
35 lines
3276 bytes
W dniu poniedziałek, 10 listopada 2014 08:58:53 UTC+1 użytkownik wloochacz napisał:
> W dniu 2014-11-10 08:51, Pancio pisze:
> > Witam,
> > Używam Delphi XE3, AnyDAC oraz MS SQL Server 2008.
> > Baza docelowo będzie miała do 100.000 rekordów. A pytanie dotyczy tego, że na ekranie będę musiał wyświetlić np. 1000 rekordów.
> > Czy szybszym/wydajniejszym sposobem będzie stworzenie zapytanie SQL z klauzulą np. WHERE RekordID in (rekord1, rekord2, rekord3, ...)
> Naprawdę?
> W ten sposób? Zastanów się nad segmentacją tych danych przez kategorie, 
> cechy, cokolwiek.
> 
> > czy zrobienie tego po stronie klienta stosując ustawienie Filter.
> > Z góry stokrotne dzięki za odpowiedź.
> Zapytanie po stronie serwera.
> Filtrowanie jest OK, pod warunkiem że dane już masz na kliencie lub nie 
> jest ich zbyt wiele - ok. 10K rekordów dla sieci lokalnej.
> Tylko podawanie ilości wierszy to bzdura, bo chodzi o rozmiar danych do 
> pobrania - a on zależy od ilości wierszy oraz typów danych, ilości 
> kolumn i samych danych.
> 
> 
> -- 
> wloochacz


A to wszystko, że łączę cxGrid z Fast Reportem. Chcę zostawić w DataSecie tylko te pozycje, które mają być wydrukowane.
Jednocześnie na ekranie użytkownik będzie mieć około 3K-5K wierszy, z czego drukować będzie może 100-200 pozycji. Teraz robię to w ten sposób:
1. Za pomocą ForEachRow pobieram z cxGrida numery poszczególnych rekordów z bazy
2. Zamieniam to na string i wstawiam do Filter
3. Drukuję co użytkownik zaznaczył za pomocą Fast Reporta
4. Kasuję ustawienia filtra i wszystko jest jak na początku (łącznie z zaznaczonymi rekordami, wcześniej oczywiście DisableControls oraz BeginFullUpdate)

No i działa to nawet sprawnie i bez problemów, tylko zastanawiam się czy dalej tak będzie działać, jeśli przybędzie rekordów. Jeden rekord zawiera sporo kolumn, ale głównie varchar, Int oraz Date (nie ma żadnnych Blobów i grafik).

--
Pancio
Technical Details
Message-ID: <87d1564f-7beb-4dd9-9bf2-9cca28928981@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!i13no512597qae.0!news-out.google.com!m4ni0qag.1!nntp.google.com!u7no512413qaz.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <a6022372-1f98-4080-8a45-e5033d5c11db@googlegroups.com> <5460703c$0$24334$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
X-Received: by 10.236.70.70 with SMTP id o46mr26358072yhd.9.1415612264720;        Mon, 10 Nov 2014 01:37:44 -0800 (PST)
X-Received: by 10.140.91.118 with SMTP id y109mr507169qgd.3.1415612264675; Mon, 10 Nov 2014 01:37:44 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!i13no512597qae.0!news-out.google.com!m4ni0qag.1!nntp.google.com!u7no512413qaz.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.delphi.bazy-danych
Date: Mon, 10 Nov 2014 01:37:44 -0800 (PST)
In-Reply-To: <5460703c$0$24334$65785112@news.neostrada.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.19.232.78; posting-account=7yo-vwoAAACTPHSJeUQ3HOShk2-PA34z
NNTP-Posting-Host: 83.19.232.78
References: <a6022372-1f98-4080-8a45-e5033d5c11db@googlegroups.com> <5460703c$0$24334$65785112@news.neostrada.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <87d1564f-7beb-4dd9-9bf2-9cca28928981@googlegroups.com>
Subject: Re: Co szybsze - zapytanie SQL czy filtrowanie
From: Pancio <witek.skowronski@gmail.com>
Injection-Date: Mon, 10 Nov 2014 09:37:44 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit