EVENT_DATE tarihinde bir dizininiz var mı? Eğer yapmıyorsanız, tam bir tablo taraması var ve bu, bir dizin oluşturmadan aldığı kadar hızlı.
Dizininiz varsa, sorgunuz bunu kullanmaz, çünkü to_char()
bunu devre dışı bırakır. Tablonuzun yeterince farklı tarihleri olduğunu ve bir endeks kullanmaya değer hale getirmek için yeterince toplandıklarını varsayalım. Bir indeksi birkaç yolla kullanmak için sorguyu değiştirebilirsiniz.
EVENT_DATE EVENT_DATE bir zaman elemanı bu
where event_date >= date '2016-04-08'
and event_date < date '2016-04-09'
Not kullanmak içeriyorsa sadece tarih elemanı bu
where event_date = date '2016-04-08'
kullanmak içeriyorsa o özel bir şekilde Oracle depolar TARİH değerleri. Herhangi bir maske ile saklanmazlar. Biçimlendirme sadece bir görüntüdür. Yani tek yapmamız gereken hedef tarihi anlamlı bir biçimde geçmektir.
Neden "event_date" üzerinde bir "to_char" yapıyorsunuz, tahmin ediyorum ki dizede "to_date" yapmak yerine bir "date" var mı? 'Event_date' zaman bileşenini gece yarısına ayarlanmaya zorlamaya mı çalışıyorsunuz? Hangi endeksler mevcut? 'Event_date' endeksli mi? Tabloda hangi indeksler tanımlanmış? –
Sanırım bütün gün istiyorsun. Aşağıdakileri deneyin: ' olayından olayını seçin; burada eventName = 'ARTICLE' ve event_date to_date ('08 -04-2016 ',' dd-mm-yyyy ') ve to_date ('09 -04- 2016' , 'gg-aa-yyyy') ' – dcieslak
endeksler dahil tablo yapıları (gönderilmesi için lütfen) ve sorgunuzun planını açıklamak – Aleksej