🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: PostgreSQL - jak zbudować optymalne zapytanie?

#194295
From: nkab
Date: Wed, 25 Feb 2015 11:18
39 lines
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-mail
References: <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