🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: PostgreSQL - jak zbudować optymalne zapytanie?

#194316
From: M.M.
Date: Thu, 12 Mar 2015 12:22
52 lines
3745 bytes
On Thursday, March 12, 2015 at 8:48:10 AM UTC+1, nk...@toya.net.pl wrote:
> W dniu poniedziałek, 9 marca 2015 12:23:28 UTC+1 użytkownik M.M. napisał:
> > 
> > Sorki, ale nadal nie kumam.
> > Testujesz najpierw:
> > where x < 5;
> > A potem:
> > where x < 5 AND x < 6 OR x < 5;
> > 
> > Wyszły Ci czasy t1 i t2. Załóżmy że t1<t2 to co wywnioskujesz? I na
> > odwrót, że t1>t2.
>  
> Po prostu sprawdzasz czy system poprzestaje na sprawdzeniu
> pierwszego członu warunku i dalej już nie sprawdza np.:
> 
> if (p1<>NULL and p2=p3)  czas wykonania ~0,03 sek
> if (p2=p3 and p1<>NULL) czas wykonania ~0,08 sek
> 
> 
> to co to oznacza? 
Problem w tym, że to może oznaczać bardzo dużo. Zobacz jak
dużo dzieje się w trakcie takiego głupiego zapytania. Najpierw
połączenie z bazą po TCP-IP. Zobacz jak dużo dzieje się na
tym poziomie: uprawnienia, firewalle, szyfrowanie, kompresja,
korekcja błędów. Potem zapytanie dostaje się do bazy, i znowu:
parsowanie, uprawnienia, silnik bazy danych musi sprawdzić czy 
chociaż są w bazie tabele o podanych nazwach. Potem pracuje
kompilator i optymalizator zapytania. Optymalizator może
czasami gromadzić statystyczne dane. Potem bufor systemu
plików i bufor silnika bazy danych. Sorki, ale ja nadal nie
umiem wyciągnąć żadnych wniosków z tego co przedstawiłeś.
Pokazałeś że jeden czas jest krótszy od drugiego, intuicja
podpowiada, aby wybrać ten krótszy - pomijam fakt że
trzykrotna różnica w czasach, z powodu samej zmiany kolejności 
wyrażeń, już jest podejrzana. Potem do bazy dodaję
jeden rekord, albo nawet tę samą bazę odtwarzam z kopii 
zapasowej i co może się stać? Czasy mogą się zupełnie zmienić,
prawda?


> Do testowania najlepiej używać najwolniejszego komputera
> bo wtedy te czasy są bardzo widoczne, 
Nie zgodzę się, najlepiej użyć warunków najbardziej podobnych do
tych, w jakich baza będzie pracowała. 

> no i testowane pola
> nie powinny mieć indeksów (sprawdzasz tu tylko warunek).
Ale dlaczego w ogóle taki test wykonywać, jeśli potem w
realnym działaniu można indeks założyć?


Pozdrawiam
Technical Details
Message-ID: <6a2452a5-2772-4d96-af45-9858c4435913@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!hl2no7255663igb.0!news-out.google.com!db6ni50316igc.0!nntp.google.com!hl2no10426771igb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <mci51m$dju$1@news.icm.edu.pl> <fk06sb-jtf.ln1@depesz.com> <mctd2q$q6k$1@news.icm.edu.pl> <5bb452da-87e3-46b6-bbe4-51cd8e95fc73@googlegroups.com> <c57ea06e-2252-4f0c-ad4b-a2a2fed94ac4@googlegroups.com> <ef9d0ff9-dc2b-4ce1-845d-2f080e919ebd@googlegroups.com> <27b8c3e2-f0d5-4667-a74a-09a11cbeb915@googlegroups.com> <2330ae3c-1ffb-4e8a-8327-3a7cb9cebc0b@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 10.50.178.175 with SMTP id cz15mr7237346igc.5.1426162958939;        Thu, 12 Mar 2015 05:22:38 -0700 (PDT)
X-Received: by 10.140.34.56 with SMTP id k53mr710378qgk.19.1426162958908; Thu, 12 Mar 2015 05:22:38 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!hl2no7255663igb.0!news-out.google.com!db6ni50316igc.0!nntp.google.com!hl2no10426771igb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.bazy-danych
Date: Thu, 12 Mar 2015 05:22:38 -0700 (PDT)
In-Reply-To: <2330ae3c-1ffb-4e8a-8327-3a7cb9cebc0b@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=178.36.122.220; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 178.36.122.220
References: <mci51m$dju$1@news.icm.edu.pl> <fk06sb-jtf.ln1@depesz.com> <mctd2q$q6k$1@news.icm.edu.pl> <5bb452da-87e3-46b6-bbe4-51cd8e95fc73@googlegroups.com> <c57ea06e-2252-4f0c-ad4b-a2a2fed94ac4@googlegroups.com> <ef9d0ff9-dc2b-4ce1-845d-2f080e919ebd@googlegroups.com> <27b8c3e2-f0d5-4667-a74a-09a11cbeb915@googlegroups.com> <2330ae3c-1ffb-4e8a-8327-3a7cb9cebc0b@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <6a2452a5-2772-4d96-af45-9858c4435913@googlegroups.com>
Subject: Re: PostgreSQL - jak zbudować optymalne zapytanie?
From: "M.M." <mmarszik@gmail.com>
Injection-Date: Thu, 12 Mar 2015 12:22:38 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit