<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - Problem z czasami wykonywania zapytania]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=466</link>
		<description><![CDATA[Najświeższe odpowiedzi w Problem z czasami wykonywania zapytania.]]></description>
		<lastBuildDate>Tue, 20 Jul 2010 21:17:11 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: Problem z czasami wykonywania zapytania]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2145#p2145</link>
			<description><![CDATA[To o czym tu napisałeś to jak już zauważyłeś (prawdopodobnie) efekt cache'owania.
Cache'owania konkretnych zapytań to się raczej nie wymusi.  Za pomocą modułu pg_buffercache możesz zweryfikować jaka tabela ile bloków zajmuje w cache'u i to chyba wszystko co da się z tym zrobić, no ewentualnie możesz zwiększyć rozmiar cache'a.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Tue, 20 Jul 2010 21:17:11 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2145#p2145</guid>
		</item>
		<item>
			<title><![CDATA[Problem z czasami wykonywania zapytania]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2135#p2135</link>
			<description><![CDATA[Panowie prosze o rade czy to normalne zachowanie postgres-a 8.1, że jeśli zadam wyszukiwanie tekstowe w dużej (treściowo) tabeli (z kilkoma JOIN-ami) to za pierwszym razem wykonuje je bardzo długo - załóżmy ok. 120 sekund, a za kolejnymi, nawet gdy zmienie fraze ktorej szukam,  to ze 20 razy szybciej, tj. w ciągu 6-7 sekund? czy dziala tu jakis mechanizm cache-owania?

Bo mam taki problem: loguje sie do bazy i szukam słowa np. "warszawa" w tabeli ok. pół miliona rekordow (duzo tekstu, dump ma ok. 1GB)

SELECT * 
FROM   archive_tender T 
LEFT OUTER JOIN tender_lock TL ON ( TL.tender_id=T.tender_id ) 
LEFT OUTER JOIN d_user TU ON ( TU.user_id=TL.user_id ) 
LEFT OUTER JOIN d_user TC ON ( TC.user_id=T.create_user_id ) 
LEFT OUTER JOIN d_user TI ON ( TI.user_id=T.imp_assign_user_id )
WHERE
   (( T.subject ~* '\\mwarszawa\\M' )) AND T.erased = 0 AND T.rejected = 0
ORDER BY
   tender_id DESC
LIMIT
    10000
    
i na wynik czekam ok. 120 sekund.

nastepnie dokładnie tak samo szukam innego słowa np. "radom" i wynik znajduje w 7/8 sekund. Wszystkie kolejne wyszukiwania też juz potem robia sie szybko. 

Ale jesli odczekam około godziny i znów próbuje szukać - to znów trwa to ok. 120 sekund...


Czy to normalne czy nie? i jak to wyeliminować, czy można gdzies 'cacheowac' takie wyszukiwanie zeby user za kazdym razem dostawal wynik  w ciagu kilku sekund?]]></description>
			<author><![CDATA[dummy@example.com (zbir)]]></author>
			<pubDate>Fri, 16 Jul 2010 14:07:26 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2135#p2135</guid>
		</item>
	</channel>
</rss>
