0

次のクエリ:

DELETE FROM attachmentdata
WHERE attachmentid IN
  ( SELECT attachmentid
    FROM attachments
    WHERE pageid IN
      ( SELECT contentid FROM content_delete )
  );

内部のネストされた SELECT クエリが小さなリスト (おそらく数百) を返す場合、完全に機能します。

しかし今、10000 ~ 15000 行を返すもので実行しようとしていますが、これには長い時間がかかります。クエリを実行しましたが、45 分後に何も起こりませんでした。

内部の SELECT によって返される 100 件の結果ごとに外部の DELETE クエリに移動し、次の 100 件の結果に進むようにクエリを変更することは可能ですか?

4

1 に答える 1

1

より高速にするには、INs を削除します ...

(オラクル)...

DELETE  ad
FROM attachmentdata AS ad 
INNER JOIN attachments AS att ON ad.attachmentid = att.attachmentid
INNER JOIN content_delete AS cd ON cd.contentid = att.pageid

(mysql) ...

DELETE  ad.*
FROM attachmentdata AS ad 
INNER JOIN attachments AS att ON ad.attachmentid = att.attachmentid
INNER JOIN content_delete AS cd ON cd.contentid = att.pageid
于 2013-05-22T15:03:50.473 に答える