Dado:
postgres=# create table testing(a int primary key, b int not null);
CREATE TABLE
postgres=# create index on testing (b) where b = 0;
CREATE INDEX
postgres=# \d testing
Table "public.testing"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
a | integer | | not null |
b | integer | | not null |
Indexes:
"testing_pkey" PRIMARY KEY, btree (a)
"testing_b_idx" btree (b) WHERE b = 0
Ao INSERT
inserir uma nova linha onde b
!= 0
, pagarei a penalidade de atualizar o índice?
Idealmente, gostaria de acelerar as consultas com um valor b
= 1
sem adicionar atraso na inserção de novas linhas onde b
!= 0
.
Se você inserir uma linha
b
distinta de 0, o índicetesting_b_idx
não será modificado e você não terá que pagar o preço pela modificação do índice.Para ser preciso, há uma pequena sobrecarga, porque deve haver uma verificação se
b
for 0. Mas essa sobrecarga provavelmente não será mensurável.