<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Jak to zoptymalizować???]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=448</link>
		<description><![CDATA[Najświeższe odpowiedzi w Jak to zoptymalizować???.]]></description>
		<lastBuildDate>Tue, 22 Jun 2010 14:55:33 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Jak to zoptymalizować???]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2107#p2107</link>
			<description><![CDATA[No ale w tym co podałeś nie ma NOT IN tylko IN, więc wciąż nie wiem w czym problem.
Może podaj to zapytanie tak jak ono wygląda w oryginale.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Tue, 22 Jun 2010 14:55:33 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2107#p2107</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Jak to zoptymalizować???]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2104#p2104</link>
			<description><![CDATA[z tego co sobie przypominam to chyba chodziło o to że nie mogłem uzyskać warunku złączenia typy zawiera się w jednej tabeli ale nie ma w innej czyli 
[code]
tabela1.kolumna2 NOT IN (SELECT tabela4.kolumna1
                           FROM schemat2.tabela4
                           WHERE kolumna1 = 1)
[/code]

dla takiego zapisu
[code]
tabela1.kolumna2=1
[/code]
musiałoby być 
[code]
tabela1.kolumna2<>1
[/code]
a to chyba nie przejdzie...]]></description>
			<author><![CDATA[dummy@example.com (WitekS)]]></author>
			<pubDate>Tue, 22 Jun 2010 08:20:10 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2104#p2104</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Jak to zoptymalizować???]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2073#p2073</link>
			<description><![CDATA[Ale zgodzisz sie ze ten warunek
[quote]
tabela1.kolumna2 IN (SELECT tabela4.kolumna1
                        FROM schemat2.tabela4
                        WHERE kolumna1 = 1)
[/quote]
to to samo co 
[code]
tabela1.kolumna2=1
[/code]?
Może przypomnisz sobie na czym polegał ten problem z '=' bo jakoś nic mi nie przychodzi do głowy.
A zamiana tego IN na = by prawdopodobnie ładnie przyspieszyło to zapytanie.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Sat, 12 Jun 2010 20:09:14 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2073#p2073</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Jak to zoptymalizować???]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2070#p2070</link>
			<description><![CDATA[Dzięki za podpowiedź to niestety jest tylko mały fragment całości. Z tego co zauważyłem to problem pojawia się gdy podzapytania typu 
[code]tabela1.kolumna2 IN (SELECT tabela4.kolumna1
                        FROM schemat2.tabela4
                        WHERE kolumna1 = 1)[/code]  
zwracają dużą ilość danych (ale to chyba oczywiste). Już teraz nie pamiętam dokładniej przyczyny ale właśnie porównania typu [code]tabela1.kolumna2=1[/code] nie dawały oczekiwanych rezultatów dlatego stosuję takie jak wyżej.
Doraźnie zmieniłem na przeciwną logikę czyli  coś takiego  [code]tabelaX.kolumnaY NOT IN (SELECT tabelaZ.kolumna itd.)[/code] gdzie wyników z tego select'a jest mniej.]]></description>
			<author><![CDATA[dummy@example.com (WitekS)]]></author>
			<pubDate>Tue, 08 Jun 2010 16:57:33 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2070#p2070</guid>
		</item>
		<item>
			<title><![CDATA[Odp: Jak to zoptymalizować???]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2069#p2069</link>
			<description><![CDATA[tak na szybko na początek
[quote]
tabela1.kolumna2 IN (SELECT tabela4.kolumna1
                        FROM schemat2.tabela4
                        WHERE kolumna1 = 1) 
[/quote]
tu chyba wystarczy dac 
[code]
tabela1.kolumna2=1
[/code]

[quote]
 tabela1.kolumna2 IN (SELECT DISTINCT tabela5.komumna1
                                              FROM  schemat2.tabela5,
                                                         schemat2.tabela6
                                              WHERE
                                                         tabela4.kolumna3 IN (SELECT tabela3.kolumna2 
                                                                                            FROM schemat2.tabela3) AND
                                                                                            kolumna2 = 1);
[/quote]
Tu bym wywalił distinct, przy in jest zbedny.
Poza tym chyba jest kartezjan na tabelach tabela5 i tabela6 bo ich nie łączysz nigdzie.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Tue, 08 Jun 2010 07:06:41 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2069#p2069</guid>
		</item>
		<item>
			<title><![CDATA[Jak to zoptymalizować???]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2067#p2067</link>
			<description><![CDATA[Witam
Mam takie zapytanie i do czasu jak była mała liczba danych było ok jednak teraz wykonuje się bardzo długo i chciałbym to jakiś zoptymalizować. Dla uproszczenia posłużę się symbolicznymi nazwami:
[code]

SELECT
      tabela1.kolumna1,
      tabela2.kolumna1, 
      tabela2.kolumna2,
      tabela2.kolumna3,
      tabela3.kolumna1
FROM 
      schemat1.tabela1,
      schemat2.tabela2,
      schemat3.tabela3
WHERE 
    date(tabela1.kolumna1) >= '2010-06-04' AND
    date(tabela1.kolumna1) <= '2010-06-09' AND
        tabela3.kolumna2 = tabela2.kolumna2 AND
        tabela1.kolumna2 = tabela2.kolumna4 AND
        tabela1.kolumna2 IN (SELECT tabela4.kolumna1
                        FROM schemat2.tabela4
                        WHERE kolumna1 = 1) OR
        tabela1.kolumna2 IN (SELECT DISTINCT tabela5.komumna1
                                              FROM  schemat2.tabela5,
                                                         schemat2.tabela6
                                              WHERE
                                                         tabela4.kolumna3 IN (SELECT tabela3.kolumna2 
                                                                                            FROM schemat2.tabela3) AND
                                                                                            kolumna2 = 1);

[/code]

Wygląda to na zagmatwane ale nie mam pomysłu jak to uprościć.
Po za tym przydałoby się chyba po indeksować niektóre tabele tylko czy to coś przyspieszy?
A może jakieś ustawienia w pliku konfiguracyjnym coś przyspieszą?]]></description>
			<author><![CDATA[dummy@example.com (WitekS)]]></author>
			<pubDate>Mon, 07 Jun 2010 19:51:21 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2067#p2067</guid>
		</item>
	</channel>
</rss>
