0

id という名前の主キーと約 20 のエントリを持つ単純な PostgreSQL テーブルがあります。

以下の実行には 60 ~ 70 秒かかります。

DELETE FROM user WHERE id = '20'

単純なSELECTクエリは 10 ml 未満で実行されますが、これは問題ありません。

クエリを実行EXPLAINすると、次の出力が表示されます。DELETE

"Seq Scan on user  (cost=0.00..1.26 rows=1 width=6)"
"  Filter: ((id)::text = '20'::text)"

削除クエリにそれほど時間がかかることについての説明が見つかりません。足りないものはありますか?

4

1 に答える 1

1

考えられる原因の 1 つは、このテーブルを参照している外部キーが、外部キー式に使用可能なインデックスを持っていないことです。主キーの型が不規則だとおっしゃっていたので、考えられる原因は、外部キーの型が主キーの型と一致しないことです。

編集:テーブルが小さすぎてシーケンシャルスキャンが正常であることに最初は気づきませんでした。

于 2012-09-20T11:11:02.497 に答える