Article View: pl.comp.bazy-danych
Article #194321Re: PostgreSQL - jak zbudować optymalne zapytanie?
From: Adam
Date: Sat, 14 Mar 2015 12:38
Date: Sat, 14 Mar 2015 12:38
38 lines
3094 bytes
3094 bytes
W dniu 2015-03-13 o 05:54, M.M. pisze: > On Thursday, March 12, 2015 at 4:14:39 PM UTC+1, nk...@toya.net.pl wrote: >>(...) >> Pytanie dotyczyło właśnie o kolejność członów w warunku WHERE >> i tu moja podpowiedź - od nakrótszego do najwolniejszego oczywiście >> jeśli system tak działa, że po nie spełnieniu pierwszego członu >> dajmy na to "p1 IS NOT NULL" dalszych już nie sprawdza bo po co. >> Kolega pisał, że aż 90% rekordów ma NULLe to chyba lepiej jak >> już na wstępie system zrezygnuje ze sprawdzania dalszych członów. > W sumie racja, jeśli pola w danym silniku są zorganizowane jako > tabele kolumnowe, to nie musi dociągać pozostałych danych. Można > obliczenia wykonywane w klauzuli where przyspieszyć ze 1.5 raza. > A to w niektórych przypadkach może dać zysku z 10% na całym > zapytaniu. Pytanie czy warto się bić o te 10%? > (...) Patrz szerzej. Przy jednym kliencie może to być 10%. Jeśli jest to baza danych "firmowa" (czyli obsługująca magazyn, handel, kadry, itd.) to klientów (równoczesnych) może być kilkudziesięciu, a zapytać setki czy tysiące. Jeśli jest to sklep internetowy, to klientów mogą być setki. Wtedy każde 10% robi radykalną różnicę. A jeśli się "umie" robić selecty na widokach (w MSSQL), to chyba też jest duży plus. Ja czasami widzę coś w rodzaju: select (...) where (...) and (...) and 1=1 Co ciekawe, bez warunku "and 1=1" odpowiedź idzie dłużej. Dziwne, gdyż teoretycznie każdy nowy warunek powinien przedłużyć odpowiedź. Ważne też jest, w którym miejscu siedzi owo 1=1. Ale tu już trzeba dogłębnie znać silnik. -- Pozdrawiam. Adam
Technical Details
Message-ID:
<me1a4l$u17$1@usenet.news.interia.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.interia.pl!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> <6a2452a5-2772-4d96-af45-9858c4435913@googlegroups.com> <bd8c25b1-9d49-44a0-987f-4370401878a8@googlegroups.com> <a1d9f705-3bd5-4e94-88b7-11dbb5b3b1f7@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.interia.pl!not-for-mail From: Adam <a.g@poczta.onet.pl> Newsgroups: pl.comp.bazy-danych Subject: Re: PostgreSQL - jak zbudować optymalne zapytanie? Date: Sat, 14 Mar 2015 13:38:44 +0100 Organization: INTERIA.PL S.A. Lines: 38 Message-ID: <me1a4l$u17$1@usenet.news.interia.pl> 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> <6a2452a5-2772-4d96-af45-9858c4435913@googlegroups.com> <bd8c25b1-9d49-44a0-987f-4370401878a8@googlegroups.com> <a1d9f705-3bd5-4e94-88b7-11dbb5b3b1f7@googlegroups.com> NNTP-Posting-Host: ent22.internetdsl.tpnet.pl Mime-Version: 1.0 X-Trace: usenet.news.interia.pl 1426336725 30759 83.15.205.22 (14 Mar 2015 12:38:45 GMT) X-Complaints-To: usenet@firma.interia.pl NNTP-Posting-Date: Sat, 14 Mar 2015 12:38:45 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 In-Reply-To: <a1d9f705-3bd5-4e94-88b7-11dbb5b3b1f7@googlegroups.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit