Strategy 1, specify the indexes that can be used for filtering. A table search will retrieve the remaining data. This almost doubles the use of space, and the fours record the cost of I / O.
on EventTable(EventDate) on EventTable(EventTypeCode) on EventTable(EventStatusCode)
Strategy 2, specify coverage indexes that you can use for filtering. There will be no requests. This increases the use of space and records the cost of I / O.
on EventTable(EventDate, EventId, EventTypeCode, EventStatusCode) on EventTable(EventTypeCode, EventId, EventDate, EventStatusCode) on EventTable(EventStatusCode, EventId, EventDate, EventTypeCode)
The reason that the order of the columns matters in the coverage index (in the general case) is because the data is ordered for each column in turn. That is: column 2 connects the broken line 1. Column 3 connects the broken line 1 and 2.
Since you do not have queries that filter across multiple columns, there is no value in the column after the first column (in your case).
If you had a request, for example
where EventDate = @EventDate and EventTypeCode = @EventTypeCode
Then this coverage index will be useful. EventDate is most likely more selective than EventTypeCode, so it comes first.
on EventTable(EventDate, EventTypeCode, EventId, EventStatusCode)
Edit further: If you have a request, for example
where EventDate between '2008-12-01' and '2008-12-31' and EventTypeCode = 'todo'
Then this indicator will work best:
on EventTable(EventTypeCode, EventDate, EventId, EventStatusCode)
This will combine all the "todo" events sorted by their EventDate as a tie breaker. SQL Server just has to find the first item and read until it finds an item that does not meet the criteria and stops.
If EventDate was the first in the index, then the data will be sorted by date, and then each date will have "todo" events grouped together. SQL Server will find the first todo on 12-01, read until it finds an item that does not meet the criteria ... then find the first todo on 12-02, read until it is from todo ... then find ... in within 31 days.
You want to select an index that places the elements you want adjacent to each other.
At 300 entries per day, your desk will receive up to 5 million entries in 50 years. This is not so important. Any strategy will work. Strategy 1 is likely to be fast enough (error on the side of space).