SQLの最適化の経験を一度覚えておいてください(データベースタイミングタスク)

ショーはビューからデータを取得することですので、作業中に遭遇する問題は、我々は、あまりにも遅いデータロードでページを表示しますが、ビューは、より複雑な構造、複数のテーブルからマルチテーブル関連データを使用することです取得しました。使用ビューとテーブルビューを最適化する方法の思考から始まります。しかし、そのような時間以上の百秒でクエリの順序を使用するような複雑な構造、最適化後または遅い、のために、これは確かに受け入れられません。唯一の方法のためのタイミングに定期的にタスクを使用して、データベーステーブルのデータを削除することを決定し、新しいテーブルのデータが、それは単にデータを更新することです。しかし、最初の接触は、またはいくつかの時間を費やしています。

コードは以下の通りであります:

- にテーブルV_TEST、データ構造と同じビューを作成する

SELECT ASのCREATE TABLE V_TEST * ; TEST FROM

 - データリフレッシュするための定義された正規タスクSCIENTIFIC_JOB、

DECLAREのTEST_JOB番号を、

BEGIN    

  DBMS_JOB.SUBMIT(          

     JOB => TEST_JOB、 - タスク名前        

     、何が => ' V_TEST FROM DELETE、INSERT INTO V_TESTをSELECT * TEST FROM; COMMIT; '、 - ストアドプロシージャ名またはSQLステートメントを実行する            

     NEXT_DATE => SYSDATE、 -初期実行時間- 即時実施の          

     INTERVAL => " TRUNC (+ SYSDATE 1。)+9/24 "   - 九時毎朝      

   ); 

  A COMMIT;     

END;



 - 注意を払います!IDを見つけるためにここにTEST_JOBは、以下で使用されます。現在のデータベースのユーザIDがタスクIDで見つかりLOG_USER 

SELECT * からDBA_JOBS;



 - ミッション1183は、上記のIDをチェックアウトすることで交換する必要がある所有し

始める        

  dbms_job.run(1183 ); 

END;   



クエリに関連するタイミングタスク:

 - リモートサーバとして現在の時刻を表示し、ローカル時間が異なります

。SELECT TO_CHAR(SYSDATE、' YYYY-MM-DD HH24:MI:SS 'からデュアル;



 - すべてのスケジュールされたタスクが表示さ

SELECT * からDBA_JOBS;



 - - スケジューリングタスクが実行見る

SELECT * からDBA_JOBS_RUNNINGを;



  -1183のタスクはタスクIDを照会することで削除

始める    

  DBMS_JOB.REMOVE(1183 ); 

 END;   

 

久しぶりのブログへの記事、最近少し忙しいです。0.0を給油

 

おすすめ

転載: www.cnblogs.com/zou-zou/p/11447301.html