Do you have an index on EVENT_DATE? If you don't then you've got a full table scan and that's as fast as it gets without building an index.
If you do have an index your query won't use it, because the to_char()
will disable it. Let's assume your table has enough different dates and that they are sufficiently clumped together to make it worth using an index. You can change the query to use an index in a couple of ways.
If EVENT_DATE contains only the date element use this
where event_date = date '2016-04-08'
If EVENT_DATE contains a time element use this
where event_date >= date '2016-04-08'
and event_date < date '2016-04-09'
Note that Oracle stores DATE values in a special way. They are not stored with any particular mask. Formatting is just a display thing. So all we need to do is pass the target date in a meaningful format.