<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - optymalizacja zapytania SQL]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=236</link>
		<description><![CDATA[Najświeższe odpowiedzi w optymalizacja zapytania SQL.]]></description>
		<lastBuildDate>Tue, 16 Jun 2009 17:14:04 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: optymalizacja zapytania SQL]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=999#p999</link>
			<description><![CDATA[Jakieś plany wykonania zapytań? I czemu nie możesz użyć pierwszego sposobu albo chociaż join'ów?]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Tue, 16 Jun 2009 17:14:04 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=999#p999</guid>
		</item>
		<item>
			<title><![CDATA[optymalizacja zapytania SQL]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=996#p996</link>
			<description><![CDATA[mam problem z optymalizacją zapytań 

Mam 2 tabele temat i zdarzenie. Jeden temat może mieć wiele zdarzeń.

Mam 3 zapytania, które dają ten sam rezultat:

1. 
SELECT t.nazwa FROM temat t, zdarzenie z
WHERE z.temat_id1 = t.temat_id AND z.typ='AAA'  

2.
SELECT t.nazwa FROM temat t
WHERE t.temat_id in (
			SELECT z.temat_id1 FROM zdarzenie z 
			WHERE z.temat_id1=t.temat_id  AND z.typ='AAA')

3.			
SELECT t.nazwa FROM temat t
WHERE t.temat_id in (
			SELECT z.temat_id1 FROM zdarzenie z 
			WHERE  z.typ='AAA')

Nie mogę za bardzo użyć pierwszego, natomiast nie wiem który z dwóch kolejnych jest poprawny.
Do tej pory stosowałem wersję nr 2  i było dobrze (szybko) natomiast "coś" się stało z bazą i teraz zdecydowanie szybciej wykonuje się 3, a 2 ma teraz czas zupełnie nieakceptowalny. Zupełnie odwrotnie niż wcześniej

Może to kwestia parametrów bazy, ale na tym zupełnie się nie znam.

tabela temat ma ok 300 tys rekordów a zdarzenie ok 6 mln
zrobiony był VACUUM , ANALYZE i reindeksacja  
tabele nie mają kluczy, ale są indeksy na kolumnach t.temat_id i z.temat_id1

Muszę przerzucić się na 1 albo 3 ?
Czy może da się coś zrobić aby pozostać przy zapytani nr 2.

Proszę o wszelki opinie i uwagi - może ktoś miał podobny problem]]></description>
			<author><![CDATA[dummy@example.com (heban)]]></author>
			<pubDate>Tue, 16 Jun 2009 15:11:40 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=996#p996</guid>
		</item>
	</channel>
</rss>
