I really don't understand.
The query "shipped" to your oracle instance will be exactly the same using
DAL as the one using "bind variables".
The DAL just does binding for you (in the 90% of the cases, better)
If you want to retrieve from a table all records in one query, and you have
a "large" list of "key values" to filter it with, you can do it only with
two syntaxes....
either
select * from table where column in (1,2,3,4,5,6,....)
or
select * from table
where
column = 1
or
column = 2
or
column = 3
or
column = 4
Now, every database has its own query planning, but as far as I know Oracle
responds better to the first one than the latter.
For the sake of completeness, MSSQL is more fun .... MSSQL 2000 to 2005
without any SP performed better on the first, while 2005 sp2 to 2008 R2
performs best with the latter ... Postgresql instead has similar times but
from 8.4 to 9.1 there has been a steep improvement on it, etc etc etc
Binding with "in" won't get you where you want to go.... you have to
prepare the "in" list as a "pre-quoted" string and pass that as a
parameter, however, as I was saying, there will not be any difference on
the query shipped to your db instance.
Same thing goes for the "or" method .....
For the sake of completeness #2, in web2py should resemble similarly to
mems = [1,2,3,4,5, ...]
q = [] # list of conditions
for c in mems:
q.append[db.table1.field == c]
all_queries_in_or = reduce(lambda a,b: (a | b ), q)
result = db(all_queries_in_or).select()
--
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.