Thanks for the reply Chris,
I have already posted some sample data in my earlier post. Due to some legal restrictions, I can't post more data.
I have executed the code and results are as below:
1. As you Optimized
(89090 row(s) affected)
Table 'comp'. Scan count 199405, logical reads 907812, physical reads 83, read-ahead reads 873, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'comp_chain'. Scan count 89090, logical reads 268582, physical reads 445, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
2. After changing a line in your code
--WHERE top_comp.parent_comp_id IS NULL OR top_comp.parent_comp_id = '0'
where isnull(top_comp.parent_comp_id, '0') ='0'
(89090 row(s) affected)
Table 'comp'. Scan count 1, logical reads 604512, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'comp_chain'. Scan count 89090, logical reads 268582, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
(1 row(s) affected)
Original IO statistics
Table 'comp'. Scan count 1, logical reads 637983
New IO statistics
Table 'comp'. Scan count 1, logical reads 604512