Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

270
Views
Exclusión de restricciones de Postgres para consultas preparadas y parametrizadas

A partir de Postgres 9.2, la exclusión de restricciones ahora se puede realizar en restricciones que usan valores parametrizados (consulte 5.9.6 Advertencias ).

Sin embargo, supongo que esto no se aplicaría a una declaración preparada con una restricción parametrizada, ya que la planificación de consultas se realiza en el momento de PREPARAR. ¿O se ha hecho algo inteligente para que esto funcione?

¿Alguien puede confirmar de cualquier manera?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

declaración preparada no cambia la planificación aquí, mire el ejemplo:

 so=> create table so81(i int); CREATE TABLE so=> create table so82(check (i > 2)) inherits (so81); CREATE TABLE so=> create table so83(check (i > 0 and i<=2)) inherits (so81); CREATE TABLE so=> insert into so82 select 3; INSERT 0 1 so=> select * from only so81; i --- (0 rows) so=> select * from so81; i --- 3 (1 row) so=> SET constraint_exclusion = on; SET so=> prepare so83 (int) as select 1 from so81 where i = $1; ERROR: prepared statement "so83" already exists so=> prepare so84 (int) as select 1 from so81 where i = $1; PREPARE so=> explain analyze execute so83(3); QUERY PLAN ------------------------------------------------------------------------------------------------------------ Result (cost=0.00..42.02 rows=14 width=4) (actual time=0.037..0.039 rows=1 loops=1) -> Append (cost=0.00..41.88 rows=14 width=0) (actual time=0.037..0.039 rows=1 loops=1) -> Seq Scan on so81 (cost=0.00..0.00 rows=1 width=0) (actual time=0.005..0.005 rows=0 loops=1) Filter: (i = 3) -> Seq Scan on so82 (cost=0.00..41.88 rows=13 width=0) (actual time=0.030..0.031 rows=1 loops=1) Filter: (i = 3) Execution time: 0.061 ms (7 rows) so=> SET constraint_exclusion = off; SET so=> explain analyze execute so83(3); QUERY PLAN ------------------------------------------------------------------------------------------------------------ Result (cost=0.00..84.02 rows=27 width=4) (actual time=0.030..0.033 rows=1 loops=1) -> Append (cost=0.00..83.75 rows=27 width=0) (actual time=0.029..0.032 rows=1 loops=1) -> Seq Scan on so81 (cost=0.00..0.00 rows=1 width=0) (actual time=0.004..0.004 rows=0 loops=1) Filter: (i = 3) -> Seq Scan on so82 (cost=0.00..41.88 rows=13 width=0) (actual time=0.025..0.026 rows=1 loops=1) Filter: (i = 3) -> Seq Scan on so83 (cost=0.00..41.88 rows=13 width=0) (actual time=0.002..0.002 rows=0 loops=1) Filter: (i = 3) Execution time: 0.126 ms (9 rows)
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!