Also, don't use SELECT *. You may be bringing back columns you aren't using - or someone may add a massive TEXT column in the future, which your application won't be expecting/using, and that will reduce the performance of your query further.
I think the change to use a JOIN could be as important in improving performance as the LIKE '%N%' issue - in your original syntax SQL is having to make a lot of correlated queries to get the Parent Product_Name and Description (unless the optimiser is smart enough to spot that ...)
In fact the LIKE issue may be mute - even if the Flag column is indexed I can't see SQL using it [for an EQUALS test] if the only values are Y and N and are evenly spread (if Flag = N is a very small proportion of the rows [i.e. highly selective] then the optimiser may use the index [by checking the Statistics for the index]). So if SQL has to do a full table scan anyway to solve Flag = 'N' then its not a lot more work to do Flag LIKE '%N%'
Performance will then be helped further by having an index on ParentItem and another on ItemID (which may be your Primary key anyway)
(My knowledge is only with MS SQL Server)