• One thing that slows things down is casting in the where clause. I see this in query 2.

    plus I also see in the WHERE clause -->

    Entitlement.EntitlementId IS NULL where this is a right table. So you are not doing the filtering in the join. So that means these rows will be removed after you processed the join. This is a different result set than if you put the filter in the join. You do this on at least a couple of other right tables so I recommend you revisit the business requirement here. If you dont want these rows from the left or right tables, better to not use the left join and an inner join instead. That will save you some processing of having a result set only to delete from it again. Does this makes sense?

    ----------------------------------------------------