Q:

Multiple Joins + Lots of Data Optimization

I am working on a massive join at work and have very limited resources in terms of being able to add indexes and such as well as what I can do in the query itself due to the environment (i.e. I can only select data, no variables or table creations allowed).   I have read somewhere that a subquery will automatically index the result, is this true?   Also for my major join tables (3) each has ~140K rows.   I have to join 2 extra tables to ensure filtering is correct.   I have the query listed below which I currently have criteria on the JOIN clause.   Another question is if I move my criteria to a where clause either in or out of the subquery will it benefit? 
  SELECT * 
FROM   (SELECT          NULL AS A1, 
                        DFS_ROHEADER.TECHID, 
                        DFS_ROHEADER.RONUMBER, 
                        DFS_ROHEADER.CUSTOMERNUMBER, 
                        DFS_CUSTOMER.BNAME, 
                        DFS_ROHEADER.UNITNUMBER, 
                        DFS_ROHEADER.MILEAGE, 
                        DFS_ROHEADER.OPENEDDATE, 
                        DFS_ROHEADER.CLOSEDDATE, 
                        DFS_ROHEADER.STATUS, 
                        DFS_ROHEADER.PONUMBER, 
                        DFS_TECH.REGION, 
                        DFS_TECH.RSM, 
                        DFS_ROPART.PARTID, 
                        CONVERT(NVARCHAR(max), DFS_RODETAIL.STORY) AS STORY 
        FROM   DFS_ROHEADER 
               LEFT JOIN DFS_CUSTOMER 
                      ON DFS_ROHEADER.CUSTOMERNUMBER = DFS_CUSTOMER.CUST_NO 
               LEFT JOIN DFS_TECH 
                      ON DFS_ROHEADER.TECHID = DFS_TECH.TECHID 
               INNER JOIN DFS_RODETAIL 
                       ON DFS_ROHEADER.RONUMBER = DFS_RODETAIL.RONUMBER 
               INNER JOIN DFS_ROPART 
                       ON DFS_RODETAIL.RONUMBER = DFS_ROPART.RONUMBER 
                          AND DFS_RODETAIL.LINENUMBER = DFS_ROPART.LINENUMBER 
                          AND DFS_ROHEADER.RONUMBER LIKE '%$FF_RONumber%' 
                          AND DFS_ROHEADER.UNITNUMBER LIKE '%$FF_UnitNumber%' 
                          AND DFS_ROHEADER.PONUMBER LIKE '%$FF_PONumber%' 
                          AND ( DFS_CUSTOMER.BNAME LIKE '%$FF_Customer%' 
                                 OR DFS_CUSTOMER.BNAME IS NULL ) 
                          AND DFS_ROHEADER.TECHID LIKE '%$FF_TechID%' 
                          AND DFS_ROHEADER.CLOSEDDATE BETWEEN 
                              FF_ClosedBegin AND FF_ClosedEnd 
                          AND ( DFS_TECH.REGION LIKE '%$FilterRegion%' 
                                 OR DFS_TECH.REGION IS NULL ) 
                          AND ( DFS_TECH.RSM LIKE '%$FF_RSM%' 
                                 OR DFS_TECH.RSM IS NULL ) 
                          AND DFS_RODETAIL.STORY LIKE '%$FF_Story%' 
                          AND DFS_ROPART.PARTID LIKE '%$FF_PartID%' 
        WHERE  DFS_ROHEADER.DELETED_BY < 0 
               AND DFS_RODETAIL.DELETED_BY < 0 
               AND DFS_ROPART.DELETED_BY < 0) T 
ORDER  BY T.RONUMBER 

This query works; however, it can take forever to run, and can timeout.   I have other queries that also run in the environment and I will take whatever you can give me in terms of suggestions and apply it to those.  I am using SQLServer 2000, Thanks for the help. 
EDIT:
Execution Plan:
https://dl.dropboxusercontent.com/u/99733863/ExecutionPlan.sqlplan
UPDATE:
I have come to the conclusion the environment I'm working in is the cause of the problem.   My query works as intended and is not slow at all (1 sec.  for 18,000 rows).   As stated in the comments I have to fill grids with limited flexibility and I believe that these grids fill by first filling a temporary grid with the SQL statement and then copying row by row into the desired grid.  There is a good chance that this is the cause of my issues.  Thanks for the help. 

A:

I have come to the conclusion the environment I'm working in is the cause of the problem.   My query works as intended and is not slow at all (1 sec.  for 18,000 rows).   As stated in the comments I have to fill grids with limited flexibility and I believe that these grids fill by first filling a temporary grid with the SQL statement and then copying row by row into the desired grid.  There is a good chance that this is the cause of my issues.  Thanks for the help everyone.