Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: DBD::Oracle bind params and IO usage

by runrig (Abbot)
on Feb 09, 2013 at 00:12 UTC ( #1017909=note: print w/replies, xml ) Need Help??

in reply to DBD::Oracle bind params and IO usage

Why does binding your values with placeholders actually create additional DB IO for your query?

It doesn't, always, but it can. It depends on the query plan generated with vs. without parameters. I assume your real query is not as simple as you have above, otherwise there would probably be no difference in query plans. Maybe you (or the DBAs) just need to update statistics on the table, but maybe, without knowing what specific values you're going to bind, Oracle can't figure out what the most efficient (or even what a decently efficient) query plan should be. This can happen on queries that include things such as LIKE clauses, e.g. 'LIKE ?' where Oracle doesn't know if you're going to bind 'ABCD%' (which can use an index) or '%ABCD%' (which can not).

Replies are listed 'Best First'.
Re^2: DBD::Oracle bind params and IO usage
by tj_thompson (Monk) on Feb 09, 2013 at 00:44 UTC
    Yes, real query is much more complicated. So not a weird Perl thing and it's pretty much impossible to quantify the vague Oracle voodoo going on in the background. Got it. Guess it's back to trying to optimize my query further. Thanks for the information runrig :)
      Generate the query plan for both cases and compare can possibly get clues on how to make one more like the other, or how to reorganize or break up your query. Or just fall back to interpolating your parameters into your sql...after scrubbing for Bobby Tables, of course :-)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1017909]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (9)
As of 2018-05-22 20:37 GMT
Find Nodes?
    Voting Booth?