|
|
|
|
SQLの再利用 |
|
スポンサード リンク
● 大文字/小文字/空白や改行の数を統一する
処理内容が同じSQLでも、大文字/小文字/空白や改行の数が異なると、別々にキャッシュされてしまい、解析済みのSQLが共有されなくなるので、その分パフォーマンスが低下する。
SQLのコーディング方法を統一して、キャッシュ上で共有されるようにしましょう。
下記4つのSQLは、処理内容は同じですが、それぞれ、メモリ上にキャッシュされ、再利用されません。
大文字/小文字/空白や改行の数は異なるので、違うSQLと解釈される。
|
select * from dept;
select * from DEPT;
select * from dept;
select *
from dept; |
● バインド変数を使用する
SQLで、変数の値を設定する場合は、バインド変数を使用することによって、SQLが共有されます。
|
○ select * from dept where dept_id = :dept_id;
× select * from dept where dept_id = 'D001'; |
※バインド変数の指定方法は、JAVA、SQLPLUS、ProCなど実行環境で異なる
●
初期化パラメータ「CURSOR_SHARING」を使用すれば、大文字/小文字/空白や改行の数を統一や、バインド変数を使用しなくても、同じSQLを共有できるようになります。
しかしながら、「CURSOR_SHARING」の変更に伴って遅くなるSQLがでる可能性もあるので、「CURSOR_SHARING」の変更は慎重にする必要があります。
スポンサード リンク
|
|
|
|
|