[pgsql-jp: 29023] Re: 【半分解決自己レス】外部キー(on update cascade) とupdateの速度について

dodo_new dodo @ o-su.com.au
2003年 2月 13日 (木) 11:10:38 JST


TCMS 百々です。

とりあえず、ローカル環境にてまったく同じ状態でテストいたしました。
すべてのテーブルを drop, create し直し、update を繰り返し行った
結果、updateは通常のスピードに戻り、すべて問題なく動いております。

現在の所の結論としては、

被参照テーブルが
CREATE TABLE A (
ID       INTEGER PRIMARY KEY,
NAME TEXT
);

このテーブルAのIDを参照するテーブルが
CREATE TABLE B (
ID       INTEGER CONSTRAINT bconstname REFERENCES A(ID)
      ON UPDATE CASCADE,
NAME TEXT,
USRID TEXT
);

となっているとして、テーブルAのNAMEを変更する際でも、
POSTGRESはUPDATEの際、参照テーブルBに対して何らかの
整合性に関わる操作(チェック?)を行っていると考えられます。

ただ、その原因や理由がわかりません。なぜそのような事をしているのか?
また、遅くなっていた原因がそもそも別にあり、DROP->CREATEし直すこと
により、その不具合が解決されたのか?
はたまた、7.3では解決できているのか?

業務上はとりあえずの問題は解決できましたので(だから半分解決)、
これでよしとしたいところなのですが、もし理由がおわかりの方が
いらっしゃいましたら、ご解説お願いできますでしょうか。
原因が分からないのは気持ち悪いものですから。

百々








pgsql-jp メーリングリストの案内