Temat: Problem z czasami wykonywania zapytania
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?
Ostatnio edytowany przez zbir (2010-07-16 16:10:00)