Optimizing sorted table for join
In this query:

select *
from item
cross apply (
    select top 1 * 
    from item_location_date 
    where ild_item = itm_id 
    order by ild_date_created desc
) ild


The correlated subquery is first filtered by ild_item and then ordered by ild_date_created to get the TOP 1. With this in mind, the index you need has to have ild_item first and ild_date_created second:

CREATE NONCLUSTERED INDEX NCI_item_location_date_item_date_created 
    ON [dbo].[item_location_date] (ild_item, ild_date_created)


Do you really need to select all columns with *? If it's just a few, you could also INCLUDE these on the index so it becomes a covering index and reduces additional pages retrievals.

Your current clustered index is ([ild_date_created], [ild_item], [ild_location]), if you don't mind changing it to ([ild_item], [ild_date_created], [ild_location]) then it will be as fast as you could get, since it's ordered in the manner you need and being it clustered you won't require additional lookups to get the data. Make sure there aren't other queries that depend on the current order if you consider making this change.