🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Relacje w praktyce

#194732
From: szemrany
Date: Wed, 16 Dec 2015 12:34
38 lines
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-mail
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>

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