PL/SQLめも(後で整形)
◆Oracle PL/SQL Programming Design-Oracle PL/SQLでバッチプログラムを設計・開発するために。
https://oracle.tf17.net/plsql/
◆長時間処理のSQLや遅いSQLの確認方法
https://oreno-it.info/archives/106
※すごいたくさんのポイントが記載されている...(^O^)/
◆なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策
https://employment.en-japan.com/engineerhub/entry/2017/06/26/110000
---@下記がポイントとのこと
【原因①】ORMが生成するSQLを確認していない
【原因②】複合インデックスを適切に使えていない
【原因③】複合インデックスの走査範囲を考慮していないため、大なり小なり記号やBETWEENが遅い
【原因④】LIKE句において、ワイルドカードが文字列の前方についている
【原因⑤】テーブル結合が不得意なデータベースで、テーブル結合を多用している
【原因⑥】ORDER BY / GROUP BYで、大量のソートが発生している
【原因⑦】データ量が増えると処理が重たい。「良くないSQL」を書いているから
【原因⑧】複数クエリの総実行時間が長い
大切なのは、データベースの仕組みを理解すること
◆コメントを書きすぎるとPL/SQLが遅くなる?
https://builder.japan.zdnet.com/db-sql/20367356/
---@下記が重要だと思う。。。
この記事を読んで、私もOracle SQL Developerの環境でSQLを流してみました。
select *
--(コメント3万行)
from table1
--(コメント3万行)
right outer join table2 on xxx
--(コメント3万行)
;
このSQLを流してみたところ
コメントなし→6ms
コメントあり→2000ms
という結果出ました。
◆Tips.6 本当にCOUNT()は遅いのか?COUNT(列名)は速いのか?~処理時間を計測~
https://oracle.tf17.net/plsql/?p=258
◆Oracleのパフォーマンス問題はCOUNT()の廃止で解決!?
http://d.hatena.ne.jp/tfurukaw/20060420
---@★後でFETCHについて要調査
データの存在チェックにはCOUNT(*)を使用しない。OPEN~FETCHで1件だけ取得してFOUND/NOTFOUNDでチェックしましょう!
◆Oracle Database パフォーマンス改善 『SQL解析時間の短縮』
https://www.casleyconsulting.co.jp/blog/engineer/151/
※基本的なことが記載されている
◆11 PL/SQLアプリケーションのパフォーマンスのチューニング
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_v1/appdev.102/B19257-01/tuning.html
◆Bulk Insert有無による性能差を、PL/SQL の FORALL文~で計測してみる。
https://gonsuke777.hatenablog.com/entry/20160101/1451644311
★Bulk Insertは別途要調査
◆超入門「PL/SQL」
https://www.atmarkit.co.jp/ait/series/5485/
◆Oracle DatabaseのPL/SQLパフォーマンス改善
https://www.ashisuto.co.jp/product/theme/database/oracle_plsql_performance.html
★DBオプロードは別途要調査
◆実践!!PL/SQLチューニング
https://www.oracle.com/technetwork/jp/ondemand/db-basic/0120-1330-plsql-tuning-297512-ja.pdf
◆PL/SQLパフォーマンス向上
http://database090212.com/oracle/plsql3_3.html