Article View: pl.comp.bazy-danych
Article #194732Re: Relacje w praktyce
From: szemrany
Date: Wed, 16 Dec 2015 12:34
Date: Wed, 16 Dec 2015 12:34
38 lines
2978 bytes
2978 bytes
On Sat, 12 Dec 2015 22:01:30 +0100, szemrany wrote: > select L.imie, L.Nazwisko, count(z.id) as liczba_samochodow from Ludzie L > join zasoby z on z.id_1 = L.id > join samochody s on s.id = z.id_2 > group by L.imie, L.nazwisko > > Tylko dzięki takiej budowie zapytania (w przeciwieństwie do Twojego) > zyskujesz potwornie na wydajności. Chodziło mi o to, że każdy kolejny JOIN eliminuje przetwarzane rekordy i zawęża zbiór przetwarzanych danych, tym samym ogranicza liczbę odczytów z pliku. Złączenie dwóch tabel po kluczu obcym da w wyniku zbiór o liczebności nie większej niż większa z tabel, w praktyce zazwyczaj mniejszy. Z kolei zapytanie typu scalar subquery, czyli: select Pole1, (select PoleTB from TabelaB) as Pole2, (select PoleTC from TabelaC) as Pole3 from TabelaA powoduje, że dla każdego rekordu TabeliA przeczesujemy wielokrotnie całą TabelęB, TabelęC etc. tym samym nie redukując liczby odczytów danych. Wszystko oczywiście w jakiejś mierze redukują optymalizatory, cache, indeksy, szybkie dyski itd., ale jak pisałem, nie skupiałem się na sprzęcie i implementacji algorytmów tylko teorii złączeń. Żeby to zweryfikować mależałoby stworzyć jakąś bazę i nasycić ją odpowiednią dużą ilością danych, tak, żeby dało się dostrzec rosnące różnice w czasie. -- howgh szemrany "Trzeba z żywymi naprzód iść, po życie sięgać nowe, a nie w uwiędłych laurów liść z uporem stroić głowę"
Technical Details
Message-ID:
<1ddns001oye6c.1esk5mwsirwbh$.dlg@40tude.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mailReferences:
<1wybpc8c36lsd$.1fen7ule9h1jh$.dlg@40tude.net> <6afe3f6d-b8e9-46af-a682-e1f741c1de22@googlegroups.com> <n4e4mk$sr7$1@usenet.news.interia.pl> <df04af2d-5b69-4906-a05e-ce9bf9af9b07@googlegroups.com> <1tjc7yjmiqguh.11krnzpakf6ri$.dlg@40tude.net> <b79ad5ec-846e-43f5-accf-6eb2f699101d@googlegroups.com> <nk4lort1sib1.kctbavh9wc3g.dlg@40tude.net> <03a7d4b6-93fc-4411-a16b-d09b01180800@googlegroups.com> <6l5i9ybjsi0b$.1dg8u6yw4z4jz$.dlg@40tude.net> <0a73ecf6-e077-41a9-8b13-8334ef196d00@googlegroups.com> <l5s51r5k1n8r$.1c55652qehijb$.dlg@40tude.net> <deab76ac-dc90-41a5-b160-4ab93cbef450@googlegroups.com> <izzsm6fj3oc5$.1huqgrqsag8ft$.dlg@40tude.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail From: szemrany <szemrany@offline.off> Subject: Re: Relacje w praktyce Newsgroups: pl.comp.bazy-danych User-Agent: 40tude_Dialog/2.0.15.84 MIME-Version: 1.0 Sender: no@please.no References: <1wybpc8c36lsd$.1fen7ule9h1jh$.dlg@40tude.net> <6afe3f6d-b8e9-46af-a682-e1f741c1de22@googlegroups.com> <n4e4mk$sr7$1@usenet.news.interia.pl> <df04af2d-5b69-4906-a05e-ce9bf9af9b07@googlegroups.com> <1tjc7yjmiqguh.11krnzpakf6ri$.dlg@40tude.net> <b79ad5ec-846e-43f5-accf-6eb2f699101d@googlegroups.com> <nk4lort1sib1.kctbavh9wc3g.dlg@40tude.net> <03a7d4b6-93fc-4411-a16b-d09b01180800@googlegroups.com> <6l5i9ybjsi0b$.1dg8u6yw4z4jz$.dlg@40tude.net> <0a73ecf6-e077-41a9-8b13-8334ef196d00@googlegroups.com> <l5s51r5k1n8r$.1c55652qehijb$.dlg@40tude.net> <deab76ac-dc90-41a5-b160-4ab93cbef450@googlegroups.com> <izzsm6fj3oc5$.1huqgrqsag8ft$.dlg@40tude.net> Date: Wed, 16 Dec 2015 13:34:05 +0100 Message-ID: <1ddns001oye6c.1esk5mwsirwbh$.dlg@40tude.net> Lines: 38 Organization: Telekomunikacja Polska NNTP-Posting-Host: 89-71-60-55.dynamic.chello.pl X-Trace: 1450269248 unt-rea-a-01.news.neostrada.pl 687 89.71.60.55:12890 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit