<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - optymalizacja zapytania SQL]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=236&amp;type=atom"/>
	<updated>2009-06-16T17:14:04Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=236</id>
		<entry>
			<title type="html"><![CDATA[Odp: optymalizacja zapytania SQL]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=999#p999"/>
			<content type="html"><![CDATA[Jakieś plany wykonania zapytań? I czemu nie możesz użyć pierwszego sposobu albo chociaż join'ów?]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2009-06-16T17:14:04Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=999#p999</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[optymalizacja zapytania SQL]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=996#p996"/>
			<content type="html"><![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]]></content>
			<author>
				<name><![CDATA[heban]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=929</uri>
			</author>
			<updated>2009-06-16T15:11:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=996#p996</id>
		</entry>
</feed>
