Strategy 1, provide indexes that can be used for filtering. Table lookups will fetch the remaining data. This almost doubles the use of space and quadruples write IO cost.
on EventTable(EventDate)
on EventTable(EventTypeCode)
on EventTable(EventStatusCode)
Strategy 2, provide covering indexes that can be used for filtering. There will be no lookups.
This quadruples the use of space and write IO cost.
on EventTable(EventDate, EventId,
EventTypeCode, EventStatusCode)
on EventTable(EventTypeCode, EventId,
EventDate, EventStatusCode)
on EventTable(EventStatusCode, EventId,
EventDate, EventTypeCode)
The reason that the column order matters in a covering index (in general), is that data is ordered by each column in turn. That is to say: column 2 tie-breaks column 1. Column 3 tie-breaks column 1 and 2.
Since you don't have any queries that filter on multiple columns, there is no significance (in your case) to the column order after the first column.
If you had a query such as
where EventDate = @EventDate
and EventTypeCode = @EventTypeCode
Then this covering index would be useful. EventDate is likely more selective than EventTypeCode, so it goes first.
on EventTable(EventDate, EventTypeCode,
EventId, EventStatusCode)
Edit further:
If you have a query such as
where EventDate between '2008-12-01' and '2008-12-31'
and EventTypeCode = 'todo'
Then this index will work best:
on EventTable(EventTypeCode, EventDate,
EventId, EventStatusCode)
This will put all the 'todo' events together, ordered by their EventDate as a tie-breaker. SQL Server just has to find the first element and read until it finds an element that doesn't meet the criteria and stop.
If the EventDate was first in the index, then the data would be ordered by date, and then each date would have the 'todo' events clumped together. SQL Server would find the first todo on 12-01, read til it finds an element that doesn't meet the criteria... then find the first todo on 12-02, read until it's out of todo's... then find... on out for 31 days.
You want to choose an index that places the items you want contiguous to each other.
At 300 records per day, your table will get to 5 million records in 50 years. This isn't that big. Either strategy will work. Strategy 1 will probably be fast enough (err on the side of space).