I have inherited an application made by a previous developer. Some of the database calls are running slow in places where there is a large amount of data. I have found in general the SQL code is well written but there are places that make me think, 'what the..?'
Here is one example:
select a.*
from bs_ResearchEnquiry a 
left join bs_StateWorkflowState_Map b
on (
   select c.MapId from bs_StateWorkflowState_Map c 
   where c.StateId = a.StateId AND c.StateWorkflowId = a.StateWorkflowId
   )=b.MapId     
where
    b.IsFinal=1
- The MapIdfield is a unique primary key to thebs_StateWorkflowState_Maptable.
- StateIdand- StateWorkflowIdtogether also form a unique key.
- There will always be a match on these keys to rows in the foreign table bs_ResearchEnquiry
Therefore, could I rewrite the left join more efficiently, and safely, as:
inner join bs_StateWorkflowState_Map b
on b.StateId = a.StateId AND b.StateWorkflowId = a.StateWorkflowId
Or was the original developer trying to achieve something I've missed ?
 
     
    