Marcos Saldivar escribió: > Entonces lo mas adecuado es no confiar a menos que las subconsultas > cumplan con condiciones > de como que no incluyeran un función volátil ???
Hmm ... > por ejemplo: > > db=> create table bar(id bigserial primary key); > db=> create table foo(id bigserial primary key); > db=> insert into foo select generate_series(1, 20); > db=> insert into bar select generate_series(10, 50); Tus tablas de ejemplo son muy chicas para mi gusto ... con unas 10000 tuplas en cada una sería más creíble y empezaría a usar indexscans donde fuera apropiado (obviamente además debes crear los índices) > db=> explain analyze select * from foo where true or 100 in (select id > from bar); Esto es muy diferente de tu pregunta porque el "true" es una constante al tiempo de crear el plan. > Lo que pretendo hacer es que la consulta en ultimo caso o en el caso > mas complejo ejecute varias subconsultas. osea > si el registro tiene un campo permiso = 't' de todos no tiene caso > verificar permisos ya que todos tienen acceso, pero en caso de que el > campo sea distinto de 't' si hay que verificar permisos y ahi entra el > or osea, si permiso <> 't' hacer subconsulta... Creo que debe haber maneras mejores de expresar esta consulta ... probablemente un JOIN. Cualquier cosa que involucre un indexscan y que te libere del SubPlan debería salir mejor. -- Alvaro Herrera http://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc. -- TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán
