2013-05-23 3 views
1

Мы используем DB2 в нашей компании, и у нас есть программа планирования (к которой у меня нет доступа), которая запускает множество SQL-файлов каждые 5 минут. У меня есть контроль над операциями SQL, ноSQL: DB2 запускает «sql», если в течение определенного времени

Один из SQL в файле должен запускаться только два раза в день и его действительно тяжелый. Так что его каждые 5 минут убивают систему.

Поэтому мой вопрос/ситуация,

  • Есть умный способ изменить SQL таким образом, что он проверяет его в течение заданного периода времени, а затем запустить его. (т. е. не выполнять логику, если она выходит за пределы определенного времени)?
  • Я не могу поставить скрипт или цикл в качестве чистого SQL. Поэтому поправка должна быть в операторе языка данных (DML)
  • Если я просто добавлю жестко запрограммированный параметр времени, будет ли DB2 выполнять логику , а затем выполнить проверку времени. Иначе было бы очень просто поместить в SQL жестко закодированный параметр времени.

Заранее спасибо

ответ

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' 
+0

спасибо помощнику. Отличный ответ. – diaryfolio

+0

Извините, я забыл спросить: будет ли (... ваш_query ...) выполнить сначала, прежде чем делать предложение Where? – diaryfolio

+0

@diaryfolio не в моем тестировании. Я попробовал это в DB2 для z/OS 10, а LUW 9.7 – bhamby

 Смежные вопросы

  • Нет связанных вопросов^_^