🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Relacje w praktyce

#194725
From: szemrany
Date: Sat, 12 Dec 2015 18:25
74 lines
3561 bytes
On Sat, 12 Dec 2015 10:09:20 -0800 (PST), M.M. wrote:

> On Saturday, December 12, 2015 at 6:03:36 PM UTC+1, szemrany wrote:
>> On Sat, 12 Dec 2015 04:45:23 -0800 (PST), M.M. wrote:
>> 
>>>> Opisz to jaśniej proszę. 
>>> Wróćmy do podstaw. Bardziej realny przykład. Tagi są zle, więc mamy
>>> cztery tabele:
>>> Ludzie
>>> Samochody
>>> Domy
>>> Działki
>>> 
>>> Każdy człowiek może mieć 0 lub więcej samochodów, domów i działek, racja?
>>> 
>>> Więc mamy tabelę łączącą:
>>> Zasoby
>>> id_własne
>>> id_1
>>> id_2
>>> 
>>> Przykład zapytania
>>> (nie kompilowałem, z góry sorry za błędy)
>>> 
>>> select 
>>>    *, 
>>>    (
>>>    select 
>>>      count(*) 
>>>    from 
>>>      Zasoby as Z 
>>>    where 
>>>      Z.id_1 = L.id
>>>    AND
>>>      Z.id_2 IN
>>>      (
>>>      select id from samochody
>>>      )
>>>   ) 
>>>   AS ilosc_samochodow
>>>   from 
>>> Ludzie as L;
>> 
>> Tak, teraz kumam.
>> Choć akurat tego typu zapytanie będzie mega zabójcze dla serwera, zgon do
>> kwadratu ;-)
>> 
>> Ale z joinami może dało by się coś sensownego spreparować, sprawdzę
>> później. 
> Zależy jak dany silnik optymalizuje wyszukiwanie. Zaproponowane przeze mnie
> wyżej rozwiązanie też można zaindeksować. Jeśli silnik nie ma lepszego

Indeksy indeksami, ale to zapytanie jest zbudowane w ten sposób, że dla
każdego wybranego wiersza z tabeli Ludzie wykonuje dwa zapytania w tabelach
Zasoby i Samochody, ergo jeśli Ludzi masz tysiąc to to _jedno zapytanie_
wykona ponad 2 tysiące zapytań w tle!

> mechanizmu niż indeksy, to inne rozwiązanie też będzie zabójcze.
> Wyszukiwanie przez index hash jest bardzo szybkie, więc inne rozwiązania
> będą szybsze maksymalnie 3-4 razy i to tylko na silnikach które mają
> coś lepszego niż indeksy.

Inne rozwiązania będą szybsze setki razy :-)


PS. oczywiście mogę nie wiedzieć, że istnieje serwer SQL, który zrozumie co
autor miał na myśli i wykona to zapytanie zupełnie inaczej niż autor mu
kazał.

-- 
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: <l5s51r5k1n8r$.1c55652qehijb$.dlg@40tude.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin3!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.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>

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!goblin3!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.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>
Date: Sat, 12 Dec 2015 19:25:43 +0100
Message-ID: <l5s51r5k1n8r$.1c55652qehijb$.dlg@40tude.net>
Lines: 74
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 89-71-60-55.dynamic.chello.pl
X-Trace: 1449944743 unt-rea-a-01.news.neostrada.pl 691 89.71.60.55:12343
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit