<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Problem z czasami wykonywania zapytania]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=466&amp;type=atom"/>
	<updated>2010-07-20T21:17:11Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=466</id>
		<entry>
			<title type="html"><![CDATA[Odp: Problem z czasami wykonywania zapytania]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2145#p2145"/>
			<content type="html"><![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.]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2010-07-20T21:17:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2145#p2145</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Problem z czasami wykonywania zapytania]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2135#p2135"/>
			<content type="html"><![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?]]></content>
			<author>
				<name><![CDATA[zbir]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=970</uri>
			</author>
			<updated>2010-07-16T14:07:26Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2135#p2135</id>
		</entry>
</feed>
