🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #183294

Re: Optymalizacja zapytania

#183294
From: Sławomir Szyszło
Date: Tue, 07 Jul 2009 18:08
46 lines
2092 bytes
Dnia Tue, 7 Jul 2009 09:41:51 -0700 (PDT), MariuszS <mariusz_stefaniak@wp.pl>
wklepał(-a):

>Mam trzy tabele:
>A, która zawiera klientów oraz B i C, która zawiera operacje.
>Rekordy z A są używane zarówno w tablicach B jak i C.
>Chcę policzyć, ile razy każdy z klientów (A) został użyty w tablicach
>B i C.
>Napisałem poniższe zapytanie, ale jest ono dość niewydajne. (tablica A
>to około 150 tys. rekordów, B - 75 tys, C - 120 tys).
>Może ktoś ma pomysł jak to zoptymalizować?
>(baza firebird 2.1)
>
>select A.id_klienta, A.nazwa, count(razem.id_klienta)
>from A
>left join
>(
>  select id_klienta from B
>  union all
>  select id_klienta from C
>) razem on razem.id_klienta=A.id_klienta
>group by A.id_klienta,  A.nazwa
>order by A.nazwa

Może najpierw policzyć, a potem złączyć?

select A.nazwa, ID, cnt
(
select sum(cnt), ID
from
(
	Select count(a.id_klienta) cnt, a.id_klienta ID
	from a
	union all
	Select count(b.id_klienta) cnt, b.id_klienta ID
	from b
)
group by ID
) razem, A
where razem.ID = A.ID
order by A.nazwa;
-- 
Sławomir Szyszło
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?group=pl.comp.bazy-danych
Technical Details
Message-ID: <h309v3.1ao.1@slaszyszCIACHTO.list.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!news.home.net.pl!not-for-mail
References: <35f46e7d-36fb-4d54-b096-18a952c3860a@x3g2000yqa.googlegroups.com>

Show Full Headers
Complete Article Headers
Message-ID: <h309v3.1ao.1@slaszyszCIACHTO.list.pl>
From: Sławomir Szyszło <slaszysz@CIACHTOlist.pl>
Newsgroups: pl.comp.bazy-danych
Subject: Re: Optymalizacja zapytania
Date: Tue, 07 Jul 2009 20:08:02 +0200
Reply-To: slaszysz@CIACHTOlist.pl
References: <35f46e7d-36fb-4d54-b096-18a952c3860a@x3g2000yqa.googlegroups.com>
X-Newsreader: Forte Agent 1.7/32.534
MIME-Version: 1.0
X-Posting-Agent: Hamster/2.0.2.1
NNTP-Posting-Host: 79.173.2.14
X-Trace: news.home.net.pl 1246990069 79.173.2.14 (7 Jul 2009 20:07:49 +0200)
Organization: home.pl news server
Lines: 46
X-Authenticated-User: slaszysz.list
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!news.home.net.pl!not-for-mail
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit