Article View: pl.comp.bazy-danych
Article #194725Re: Relacje w praktyce
From: szemrany
Date: Sat, 12 Dec 2015 18:25
Date: Sat, 12 Dec 2015 18:25
74 lines
3561 bytes
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-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>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