Abfrage beim ersten Mal langsam, dann schnell

Hallo.

Die Abfrage

SELECT     
     SUM(ch_standard_hours) AS _ch_standard_hours,
     SUM(ch_weekend_hours) AS _ch_weekend_hours, 
     SUM(ch_meeting_hours) AS _ch_meeting_hours,
     SUM(ch_milage) AS _ch_milage,
     ch_date, 
     ec_ref_marginal_employment,
     ec_ref_contract_type,  
      ec_start_date,    
     ec_end_date FROM 
    "BiSCAT_combined".care_hours,
     "BiSCAT_combined".employee_contracts 
WHERE     
    care_hours.delmark = 0 AND
    employee_contracts.delmark = 0 AND
    ch_ref_employee_contract = ec_id
    AND ec_ref_person = 282 AND 
    TO_CHAR(ch_date, 'YYYYMM') = TO_CHAR('2008-01-01   +01:00:00'::timestamp,
    'YYYYMM' ) 

GROUP BY 
      ec_id , 
      ch_date, 
      ec_ref_marginal_employment, 
      ec_ref_contract_type, 
      ec_start_date,
      ec_end_date

dauert bei der erstmaligen Ausführung circa 25 Millisekunden.
Führe ich dasselbe Statement noch einmal aus dann dauerts nur noch 1 Millisekunde. Führe ich das Statement ohne den Datumsvergleich mit TO_CHAR auf dann dauert die Abfrage beim ersten Aufruf auch nur 1 Millisekunde.

Weiß jemand warum anscheinend der TO_CHAR Aufruf so langsam ist?

lg
andi k.

Erst einmal, der zweite Aufruf geht schneller, weil dann Dinge wie Indexe etc. im Cache stehen. Dann, das TO_CHAR() verhindert möglicherweise die Benutzung eines Indexes. Genaueres dazu aber via EXPLAIN ANALYSE, wie immer.

Andreas