Oracle

SQLを少しでも高速化するためのチューニング

投稿日:2013/02/12 更新日:

OracleでのSQL高速化

かなり前なりますが作った処理が遅く、「SQLだけでも見直せ!!」ということで
調べていた内容です。
SQLを高速化するチューニングは難しいですが、以下のことを知っているだけでも
少しはましなので、書いておきます。
(この時の仕事はOracle9iでした。)

キーワードは大文字

SQLのキーワードはすべて大文字で書く。(キャッシュを使う確率をあげる)

これは高速化にも寄与しますし、コーディング上キーワードを
大文字で統一しておくことで、ソース上での検索キーワードなどにも
指定でき、デバッグにも役立ちます。
(大文字だけの「SELECT」を探せば実際に「SELECT」文を発行
 している箇所がgrepだけで検索できます。)

バインド変数利用

可能であればバインド変数を利用する。

これもSQLのキャッシュへのHIT率を上げます。
「:col_data」の内容が変化してもSQLがキャッシュに残っていれば
SQLの再コンパイルが実行されないので、その分、応答時間が短く
なります。

SELECT * は不可

SELECT * は使用不可。

これもSQLのキャッシュへのHIT率を上げるようです。
また、無駄なカラムを取得する処理が省かれるようなので
必ず指定しましょう。

SELECT COUNT(*)は使用不可

SELECT COUNT(*)は使用しない。

但し、col1に「NULL」データが含まれるかどうかの
確認は必要です。

ANDよりBETWEEN

ANDよりBETWEENの使用を検討する。

HAVINGよりWHERE

HAVINGよりWHEREの使用を検討する。

テーブルの別名

テーブルに別名を付ける。

ROWIDの利用

可能であるならばROWIDの利用を検討する。

複雑なWHERE句を書いているのであれば、ROWIDを使用することにより、
直接レコードを特定できるので処理が速くなります。

列の演算不可

列を演算(関数を使用)しない

これをやってしまうと、せっかく設定した「index」が利用されず
処理が遅くなります。
これは特に注意が必要です。

当サイトのおすすめ記事

レンタルサーバー 1

当サイトは約5年間、さくらのレンタルサーバで運用させて頂きました。 何かトラブルがあったわけではないのですが、WordPressの表示速度を速くしたくてSSD搭載のレンタルサーバーで運用してみることに ...

プログラミング 2

SQLでIFを使わずに条件分岐する SQLでIFを書けばWHERE句の内容を変えて検索できますが、条件ごとに同じようなSQLを 複数回書くのは面倒なので、1行で分岐できないかと言う事でSQLを作って見 ...

SQLServer 3

SQLServerで発生するエラーコードをSQLで取得する SQLServerで発生したエラーコードの内容を メッセージが定義されているテーブルから取得します。 エラーコードを取得するSQL SQLs ...

4

SQLServerでテーブル型を戻り値とする関数を作る SQLServerではINT型やVARCHAR型などを返す関数と同様に ユーザー定義テーブル型を戻り値とする関数を作成できます。 テーブル型を戻 ...

5

アフィリエイトで即効成果を出す アフィリエイトで成果を出す、なかなか難しいですよね。 サイトをいくつも立ち上げてすでにコツをつかんでいる人なら チョチョイっとやっていけるんでしょうけど。 でも実際はこ ...

-Oracle
-, , ,

Copyright© ソフトウェア開発日記 , 2017 AllRights Reserved.