The call stack of the function most consumed time is:
Thread [1] (Suspended)ÂÂÂ
ÂÂÂ 34 ExecInsertIndexTuples() /home/postgres/develop/postgresql-snapshot/src/backend/executor/execUtils.c:1046 0x08201e66ÂÂÂ
ÂÂÂ 33 ExecUpdate() /home/postgres/develop/postgresql-snapshot/src/backend/executor/execMain.c:2135 0x081f3b13ÂÂÂ
ÂÂÂ 32 ExecutePlan() /home/postgres/develop/postgresql-snapshot/src/backend/executor/execMain.c:1681 0x081f31c6ÂÂÂ
ÂÂÂ 31 standard_ExecutorRun() /home/postgres/develop/postgresql-snapshot/src/backend/executor/execMain.c:309 0x081f0f4bÂÂÂ
ÂÂÂ 30 ExecutorRun() /home/postgres/develop/postgresql-snapshot/src/backend/executor/execMain.c:258 0x081f0e04ÂÂÂ
ÂÂÂ 29 _SPI_pquery() /home/postgres/develop/postgresql-snapshot/src/backend/executor/spi.c:2009 0x0821fe8cÂÂÂ
ÂÂÂ 28 _SPI_execute_plan() /home/postgres/develop/postgresql-snapshot/src/backend/executor/spi.c:1831 0x0821facdÂÂÂ
ÂÂÂ 27 SPI_execute_plan() /home/postgres/develop/postgresql-snapshot/src/backend/executor/spi.c:392 0x0821d201ÂÂÂ
in execMain.c, the call of ExecInsertIndexTuples() is as following:
if (resultRelInfo->ri_NumIndices > 0 && !HeapTupleIsHeapOnly(tuple))
ÂÂÂ ÂÂÂ ExecInsertIndexTuples(slot, &(tuple->t_self), estate, false);
2010/10/12 Ben Carbery <ben.carbery@xxxxxxxxx>
Well, the objects indices 1,2,3 point to changed when you changed column a4, but I don't know if that's the reason. I would guess that the indices are structured as pointers of some kind though.On Wed, Oct 13, 2010 at 9:03 AM, sunpeng <bluevaley@xxxxxxxxx> wrote:
the question is why all four indices updated in the execution of SPI_execute_plan()?Â
I think there should only one index, that is ind_a4 be updated, how to avoid other three indices updated?
thanks!