Article View: pl.comp.bazy-danych
Article #194316Re: PostgreSQL - jak zbudować optymalne zapytanie?
From: M.M.
Date: Thu, 12 Mar 2015 12:22
Date: Thu, 12 Mar 2015 12:22
52 lines
3745 bytes
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-mailReferences:
<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