制約っていらなくね? (114レス)
上
下
前
次
1-
新
34
(1)
:
29
04/07/10 22:20 ID:???
AA×
>>33
>>29
>>32
>>32
[240|
320
|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
34: 29 [sage] 04/07/10 22:20 ID:??? >>33 現在はまだ実験してる段階なので、実際どのくらいの処理時間になるかはわかりませんが、やろうとしていることは次のようなものです。 このテーブルAはちょっとしたログテーブルみたいなもので、トランザクション毎に一行 INSERT されます。 で、そのトランザクション内で更新されたいろんなテーブルのレコードには、その TABLE_A.ID を記録します。 だからほっとくとテーブルAレコードは無限に増えて行きますし、TABLE_A.ID を外部キーとするテーブルの数も数十個あります。 また、更新を繰り返すうち、古いログ情報はどのテーブルからも参照されなくなるので、そうなったときには削除しなくてはなりません。 各テーブルの規模は、数十件くらいのものから数万件を超えそうなものまで様々です。 だから、>>29 にある SELECT で逐一被参照数をカウントするのは、ちょっと具合が悪そうだと推測できます。 まあ、必ずしも数を数える必要性は無いので、COUNT しようなんてことはせずに EXIST で各テーブルの参照の有無を調べて ばっさり DELETE してしまってもいいですが、WHERE には結局数十個のテーブルについての EXIST が並ぶことになり、 パフォーマンスは悪そうです。 DBの内部では、外部キーに参照されたレコードが削除されるときに、そのことを瞬時に把握する仕組みを持っているはずで、 それをなんとか利用する手段は無いのかと思っています。 ちなみに DB は PostgreSQL です。 システムテーブルについてもあれこれ調べてみたのですが、今のところめぼしい発見はありません。 テーブルAに被参照カウントを持って、各テーブルが更新されるときにトリガを使ってカウンタの自動更新をすることも考えましたが、 PostgreSQL はトリガ関数をお手軽に作れないようなのでちょっとアレです。 >>32 の内容はよくわからないのですが、テーブルAの全行を無条件に削除したら削除できないものだけ残るって やり方があるなら、そういうアプローチでもOKです。 ところで >>32 の ON DELETE NO ACCTION って、TABLE_A.ID につけるものじゃなくて、他のテーブルの外部キーに 付けるものではないのでしょうか。 で、NO ACTION が指定されてると、削除しちゃいけない行を削除したときにはエラーになって処理してもらえないと思いますが、 ちょっと勘違いしてますかね? http://mevius.5ch.net/test/read.cgi/db/1087483786/34
現在はまだ実験してる段階なので実際どのくらいの処理時間になるかはわかりませんがやろうとしていることは次のようなものです このテーブルはちょっとしたログテーブルみたいなものでトランザクション毎に一行 されます でそのトランザクション内で更新されたいろんなテーブルのレコードにはその を記録します だからほっとくとテーブルレコードは無限に増えて行きますし を外部キーとするテーブルの数も数十個あります また更新を繰り返すうち古いログ情報はどのテーブルからも参照されなくなるのでそうなったときには削除しなくてはなりません 各テーブルの規模は数十件くらいのものから数万件を超えそうなものまで様です だから にある で逐一被参照数をカウントするのはちょっと具合が悪そうだと推測できます まあ必ずしも数を数える必要性は無いので しようなんてことはせずに で各テーブルの参照の有無を調べて ばっさり してしまってもいいですが には結局数十個のテーブルについての が並ぶことになり パフォーマンスは悪そうです の内部では外部キーに参照されたレコードが削除されるときにそのことを瞬時に把握する仕組みを持っているはずで それをなんとか利用する手段は無いのかと思っています ちなみに は です システムテーブルについてもあれこれ調べてみたのですが今のところめぼしい発見はありません テーブルに被参照カウントを持って各テーブルが更新されるときにトリガを使ってカウンタの自動更新をすることも考えましたが はトリガ関数をお手軽に作れないようなのでちょっとアレです の内容はよくわからないのですがテーブルの全行を無条件に削除したら削除できないものだけ残るって やり方があるならそういうアプローチでもです ところで の って につけるものじゃなくて他のテーブルの外部キーに 付けるものではないのでしょうか で が指定されてると削除しちゃいけない行を削除したときにはエラーになって処理してもらえないと思いますが ちょっと勘違いしてますかね?
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 80 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.682s*