AFACT, SQL::Statement can bind the placeholders prior to "generating an execution plan for the query." As each DBD differs slightly anyways (DBD::mysql and DBD::Pg anyone?!), you can advertise this as a "feature" with little developer cost.
I've always thought that the execution plan argument against LIMIT placeholders was a bunch of hooey. The execution plan isn't be any worse because you're taking the 100th-119th records vs. full set. You still have to go retrieve the whole record set anyways. The only things I can see are
- If your LIMIT starts at 0, you might lose an optimization if your tables are split across disks.
- If your LIMIT starts at a higher number than your cardinality in one of the indices, you execute the query even though you can know you'll be returning an empty set.
Those are all lost optimizations. They're not degradations of the base query's execution plan. Oracle's developers are just lazy.
- In general, if you think something isn't in Perl, try it out, because it usually is. :-)
- "What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?"