Search functionality using joins
How would you write the FULL OUTER JOIN if it were available.  (I don't see the need for it in your case.)

p.title like '%%' is a costly no-op.  Remove it from the WHERE clause.  (I assume you are building the WHERE on the fly?  If so, make your code a little smarter.)

pl.stageNumber = 60.60 OR
pl.stageNumber &lt; 60.60


-->

pl.stageNumber &lt;= 60.60


ORs are costly because they often make it so the index cannot be used.

Are those stage numbers always dd.dd ?  If so, use DECIMAL(4,2).  DOUBLE has potential rounding errors, an may fail to match when you expect.