1

私たちは会社でDB2を使用しており、5分ごとに一連のSQLファイルを実行するスケジューリングプログラム(私はアクセスできません)を持っています。ただし、SQLステートメントを制御できます

ファイル内の SQL の 1 つは 1 日に 2 回しか実行する必要がなく、非常に重いものです。したがって、5 分ごとに実行すると、システムが停止します。

したがって、私の質問/状況は、

  • 所定の期間内にあるかどうかを確認して実行するように SQL を変更する賢い方法はありますか。(つまり、特定の時間外の場合、ロジックを実行しないでください)?
  • スクリプトや if ループを純粋な SQL として配置することはできません。したがって、修正はデータ操作言語 (DML) ステートメント内に含める必要があります。
  • ハードコーディングされた時間パラメーターを追加するだけで、DB2 はロジックを実行してから時間チェックを行います。それ以外の場合は、ハードコーディングされた時間パラメーターを SQL に入れるのは非常に簡単でした。

前もって感謝します

4

1 に答える 1

2

このようなことを試してください。最初に現在のタイムスタンプを取得し、それにクエリをクロス結合します。オプティマイザは " " に行がないことを確認できるほど賢く、" A" を実行しませんB

SELECT B.*
FROM (SELECT CURRENT TIME AS CTIME FROM SYSIBM.SYSDUMMY1) A
JOIN (...your_query...) B
  ON 1=1
WHERE A.CTIME BETWEEN '08:00:00' AND '09:00:00'
于 2013-05-23T13:03:22.077 に答える