Dynamic parameters read from the database, so they're always slower than static parameters.
The trick with dynamic params is to include a separate table (or in your case, a command) that provides data for the lookup for the param - don't pull the data from the tables used in your report and don't join the table that feeds the param to any of the other tables in the report. Crystal will complain about this, but it's ok.
To include, for example, "All" at the top of the list for your param, I would create a command (SQL Select statement) something like this in the Database Expert:
Select '*All' as Value, '*All' as Display
UNION ALL
Select Field1 as Value, Field2 as Display
from MyParamTable
order by 2
Putting the "*" at the beginning of "All" ensures that it's always the first row in the lookup.
-Dell