Below I am trying to return the top address for each customer in a one to many relationship with the customeraddresses table. I used a cross apply to solve this issue, but the query is running incredibly slow. 12 minutes for 8,000 records. I ran an execution plan and I get three index seek (nonclusterd) customeraddresses table that are the majority of the cost. Can I fix with indexes or should I rewrite the query in a more efficient manner? If I have to rewrite what direction should I take? WITH PreferredAddresses as ( SELECT c.CustomerID, AddressID FROM Customers c OUTER APPLY (SELECT TOP 1 * FROM CustomerAddresses a WHERE a.CustomerID = c.CustomerID ORDER BY AddressTypeID, AddressID ) a ) SELECT c.*, a.AddressID, a.AddressTypeID, OrganizationName, AddressLine1, AddressLine2, AddressLine3, City, a.StateProvinceID, ZipCode, Honorarium, StateProvinceAbbrev, TypeName FROM