制約っていらなくね? (114レス)
上
下
前
次
1-
新
38
(1)
:
29
04/07/11 10:23 ID:???
AA×
>>37
>>35
[240|
320
|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
38: 29 [sage] 04/07/11 10:23 ID:??? >>37 すみません、まだ計測できる段階じゃなくて・・・ もちろんテスト用にデータがそろえば計測してみます。 だけど、NOT EXISTS が AND でいっぱい並ぶってことは、削除対象レコードであることがわかるためには 対象テーブルの全行を全検索することになるので、どうなんだろうと思うわけです。 INDEX 付ければ速くなるでしょうが、ログテーブルを逆引きするためにいちいち INDEX の領域とるのはなぁ、 と躊躇してしまいます。 といってもそれは、他になにか手段があるはずだと思ってるから、選択肢として後回しにしてるに過ぎない のですが。 >>DBの内部では、外部キーに参照されたレコードが削除されるときに、そのことを瞬時に把握する仕組みを持っているはずで、 > >ふつう、そんなものはない。 そうなんですかね? ON DELETE CASCADE 指定されたときはいざ知らず、ただの外部キーにより参照されてるカラムは、内部的に 被参照カウンタでも持ってるんじゃないかな、と勝手に推測したのですが。 というのは、>>35 のやり方をやったとき、 TABLE_FK には当然 TABLE_A に無い値は INSERT できないし、逆に TABLE_FK にある値は TABLE_A から削除できません。 これは期待する動作ですよね。 ところが TABLE_FK を継承した TABLE_B、TABLE_C へは、 TABLE_A に無い値でも INSERT できてしまいます。 で、TABLE_FK を SELECT してみれば、やっぱり TABLE_A に無い値を持つレコードができてしまっています。 たとえばその値が 100 だったとして、関節的にTABLE_FK に TABLE_A に無い 100 を INSERT して、次に TABLE_A に 100 を INSERT して、さらに TABLE_A からその 100 を DELETE してみると、TABLE_FK に 100 を持つ値があるのに DELETE できてしまいます。 ということは、TABLE_A が削除されるときに、外部キー参照しているテーブルをいちいち検索しに行ってるわけでは ないのかな、と思ったのですが、いかがでしょう? しかし、継承させたテーブルで継承元の制約が受け継がれないってのは、一般的な仕様なのでしょうか。 それとも PostgreSQL のバグですかね? http://mevius.5ch.net/test/read.cgi/db/1087483786/38
すみませんまだ計測できる段階じゃなくて もちろんテスト用にデータがそろえば計測してみます だけど が でいっぱい並ぶってことは削除対象レコードであることがわかるためには 対象テーブルの全行を全検索することになるのでどうなんだろうと思うわけです 付ければ速くなるでしょうがログテーブルを逆引きするためにいちいち の領域とるのはなぁ としてしまいます といってもそれは他になにか手段があるはずだと思ってるから選択肢として後回しにしてるに過ぎない のですが の内部では外部キーに参照されたレコードが削除されるときにそのことを瞬時に把握する仕組みを持っているはずで ふつうそんなものはない そうなんですかね? 指定されたときはいざ知らずただの外部キーにより参照されてるカラムは内部的に 被参照カウンタでも持ってるんじゃないかなと勝手に推測したのですが というのは のやり方をやったとき には当然 に無い値は できないし逆に にある値は から削除できません これは期待する動作ですよね ところが を継承した へは に無い値でも できてしまいます で を してみればやっぱり に無い値を持つレコードができてしまっています たとえばその値が だったとして関節的に に に無い を して次に に を してさらに からその を してみると に を持つ値があるのに できてしまいます ということは が削除されるときに外部キー参照しているテーブルをいちいち検索しに行ってるわけでは ないのかなと思ったのですがいかがでしょう? しかし継承させたテーブルで継承元の制約が受け継がれないってのは一般的な仕様なのでしょうか それとも のバグですかね?
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 76 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.049s