I didn't see a version number, but I missed the original posting, so, it = may have been there.... Anyhow, if you're on at least 9i, consider a pipelined function that you = can pass an array of data to, then select from the function as if it were a table. At that point, you = can add it to your query, control the join order and join method, etc...should give you the flexibility = you need. Hope that helps, -Mark > Yeah, I was thinking about this last night. We actually did=20 > try using =3D > pl/sql tables to prevent all the parses earlier but were getting =3D > horrible execution plans. I seem to remember an 'inlist pickler =3D > fetcher' operation or something to that affect. ...basically=20 > it executes =3D > the entire query as if the in list did not exist and then=20 > applies the in =3D > list filter in the final step of the plan regardless of how=20 > selective it =3D > is. >=20 > So there are hints to possible get the optimize to use the in list =3D > filters earlier?=3D20 -- //www.freelists.org/webpage/oracle-l