Article View: pl.comp.bazy-danych
Article #194295Re: PostgreSQL - jak zbudować optymalne zapytanie?
From: nkab
Date: Wed, 25 Feb 2015 11:18
Date: Wed, 25 Feb 2015 11:18
39 lines
2586 bytes
2586 bytes
W dniu wtorek, 24 lutego 2015 16:23:35 UTC+1 użytkownik Marek napisał: > Witam, > > Mam następującą sytuację. Istnieją dwie tabele, które będą wiązane ze > sobą następująco: > > tabela1.pole=tabela2.pole > > Kłopot w tym, że tabela2 posiada wiele nulli. Pomyślałem więc, że > zbuduję indeks częściowy: > > CREATE INDEX costam ON tabela2 WHERE pole NOTNULL > > I teraz moje pytanie brzmi: jak wiązać obie tabele aby wykorzystać ten > indeks? Czy: > > 1. tabela1.pole=tabela2.pole > 2. tabela1.pole=tabela2.pole AND tabela2.pole NOTNULL > > Ma to w ogóle znaczenie? > Rozumiem, że chcesz tak jakby krótszy plik indeksowy? Według mnie to błąd, bo przy wykorzystywaniu takiego indeksu w zapytaniach musiałbyś zawsze dawać warunek na te NULLe. W ogóle indeksy zawsze zakładaj na wszystkie rekordy a jakieś pomijanie robisz potem w WHERE. Z indeksami jest tak, że nawet jak zrobisz jakiś DELETE rekordu to on nie jest usuwany z dysku i indeks jest dla niego cały czas aktualny a przy reindex odnawiany. Dopiero przeniesienie danych to nowej tabeli może pominąć rekordy usunięte (zmiejszyć tabelę, zajętość dysku) ale wymaga to również utworzenia od nowa indeksów. I rzeczywiście dlaczego aż tyle tych nuli. Andrzej.
Technical Details
Message-ID:
<ed1d747c-5e87-4029-81c2-588aa5de237b@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.supermedia.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!hl2no23062301igb.0!news-out.google.com!c1ni195qar.1!nntp.google.com!j7no6516921qaq.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<mci51m$dju$1@news.icm.edu.pl>Show Full Headers
Complete Article Headers
X-Received: by 10.68.95.100 with SMTP id dj4mr2482857pbb.9.1424863135538; Wed, 25 Feb 2015 03:18:55 -0800 (PST) X-Received: by 10.140.28.131 with SMTP id 3mr31743qgz.16.1424863135485; Wed, 25 Feb 2015 03:18:55 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!news.supermedia.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.glorb.com!hl2no23062301igb.0!news-out.google.com!c1ni195qar.1!nntp.google.com!j7no6516921qaq.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.bazy-danych Date: Wed, 25 Feb 2015 03:18:55 -0800 (PST) In-Reply-To: <mci51m$dju$1@news.icm.edu.pl> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=31.182.205.168; posting-account=xnOwqAoAAAAJ48pUkVrL2a6sJByqdB8s NNTP-Posting-Host: 31.182.205.168 References: <mci51m$dju$1@news.icm.edu.pl> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <ed1d747c-5e87-4029-81c2-588aa5de237b@googlegroups.com> Subject: Re: PostgreSQL - jak zbudować optymalne zapytanie? From: nkab@toya.net.pl Injection-Date: Wed, 25 Feb 2015 11:18:55 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit