
下のSQL文がパフォーマンスが非常に悪いです。
何かチューニングする方法ありませんか。
Oracle8.1.7
OSはWin2000serverSP2
◇SQL文
SELECT A.HINCD , B.TANCD ,A.SIZE,A.COLOR
FROM TB_TBLA A ,TB_TBLB B
WHERE A.KA_CD = B.KA_CD(+)"
AND A.HINCD = B.HINCD(+)
AND A.JIGYOCD = 1
AND A.BRCD = 20
AND A.BUCD = 300
TB_TBLAの主キーは、JIGYOCD、BRCD、BUCDです。
TB_TBLBの主キーは、KA_CDです。
また、TB_TBLAの件数は、約10万件、TB_TBLBは3万件だとしたら、
読み込み件数は10万*3万件となるのでしょうか。
よろしくお願いします。
No.6ベストアンサー
- 回答日時:
>"iniSID.ora”の中の”SORT_AREA_SIZE”を変更するような感じで色々書いてあるのですが、iniファイルには”SORT_AREA_SIZE”たる記述がありません。
初期化パラメータファイル(init.ora)にありませんか。
ただ初期化パラメータの「sort_area_size」を大きめに変更する場合、同時に「sort_area_retained_size」も変更しないと意味がないかと思います。
それと、init.oraを変更して、Oracleを再起動する野は大変ですよね。
ALTER SESSION SET SORT_AREA_SIZE=値;で設定していろいろ試してから変更するほうがらくだと思います。
いつもご回答ありがとうございます。
初期化パラメータの変更(init.ora)なんですね。
けど、今回、もう少し様子見することになりました。
いろいろありがとうございました。
実は、今回の件でパフォーマンス・チューニングに関して初めてかかわったのですが、かじりでも触れたかなと思っています。
また、よろしくお願いします。
No.5
- 回答日時:
>ためしにヒントを入れてみたんですが、結果はさほど変わりませんでした。
/*+ FIRST_ROWS */で変わらないということは、それ以上早くならない可能性が大です。
SQLではなくオラクルの設定を見直したほうがいいと思います。
・共有プールのチューニング
・データベースバッファキャッシュのチューニング
・REDOログバッファのチューニング
・SGAのその他のチューニング
tomo316 いつもご回答ありがとうございます。
このSQL文で実行計画(autotrace)をとってみました。
するとソート読みしていることがわかり、テンポラリ領域まで使ってソートしていることがわかりました。
そこでデータをかなり削除してもらって、同じことをするとテンポラリ領域へのアクセスがかなり減りました。
お陰で無駄なデータもあったということもわかったのですが、メモリソート領域もデフォルトのままだったので、メモリソート領域を増やすことになりました。
ついでといっては申し訳ないのですが、そのメモリソート領域を動的ではなく、常に拡張するにはどのようにしたらいいのですか。
"iniSID.ora”の中の”SORT_AREA_SIZE”を変更するような感じで色々書いてあるのですが、iniファイルには”SORT_AREA_SIZE”たる記述がありません。
これは記述を追加するということなんでしょうか。
よろしくお願いします。
No.4
- 回答日時:
/*+ ALL_ROWS */
SELECT /*+ ALL_ROWS */ A.HINCD , B.TANCD ,A.SIZE,A.COLOR
/*+ FIRST_ROWS */
SELECT /*+ FIRST_ROWS */ A.HINCD , B.TANCD ,A.SIZE,A.COLOR
10倍~100倍のレスポンスが違うよ。
No.3
- 回答日時:
SELECT
A.HINCD,
(select B.TANCD from TB_TBLB B where A.KA_CD=B.KA_CD AND A.HINCD=B.HINCD),
A.SIZE,
A.COLOR
FROM TB_TBLA A
WHERE A.JIGYOCD=1 AND A.BRCD=20 AND A.BUCD=300
;
この回答への補足
ご回答ありがとうございます。
参考例で試したところ(timing取ったんですけど)、変化がみられませんでした。
timingは意味ないのでしょうか。
No.1
- 回答日時:
我が家のPCには、oracle入れてないので、推測ですが・・・
このSQLではTB_TBLAでせっかくの主キーが使われてないと思います。
SELECT A.HINCD , B.TANCD ,A.SIZE,A.COLOR
FROM TB_TBLA A ,TB_TBLB B
WHERE A.KA_CD = B.KA_CD(+)"
AND A.HINCD = B.HINCD(+)
AND (A.JIGYOCD, A.BRCD, A.BUCD) = (1, 20, 300);
これで、主キーを使うようになると思います。
Oracleで、行比較ができなかったら、すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォトショップチラつき 拡大・...
-
変更されたブックマークのUR...
-
Windows11PCでMACアドレスの変...
-
ファイル選択の項目枠の色を濃...
-
ファイル名の文字色の変更は出...
-
wifi
-
ステータスバーの文字の大きさ...
-
右クリックメニューやEXCELの上...
-
iTunesで名前を一括して変更す...
-
メールの背景色と文字色の変更
-
windows10でのアプリの表示がお...
-
サイズ変更枠ダイアログのタイ...
-
事業所変更後の初期設定について。
-
Accessのレポートで開くと「読...
-
ブルーレイを見ると残像が起きる?
-
LibreOfficeのCalcに関する質問...
-
Microsoftアカウント1つを2台...
-
ドメイン再参加時に、エラー:ア...
-
1台のPCを複数アカウントで使...
-
windows11にて管理者アカウント...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変更されたブックマークのUR...
-
ファイル名の文字色の変更は出...
-
Windows11PCでMACアドレスの変...
-
ステータスバーの文字の大きさ...
-
管理者権限以外でIP設定を変更...
-
集合型のポスト?あれの暗証番...
-
word2016のオプションの設定が...
-
ユーザー名の変更方法は?
-
マウスのカーソルの一括変更
-
フォルダ用アイコン作成 → 背景...
-
Googleアカウント 個人情報の設...
-
CD-Rのボリュームラベルの変更...
-
メールの背景色と文字色の変更
-
「コンピュータ名」の設定について
-
WORDで文字の色を赤や黄など黒...
-
windows10でのアプリの表示がお...
-
Excel電子印鑑について
-
ファイルのプロパティ、場所に...
-
Accessのレポートで開くと「読...
-
サイズ変更枠ダイアログのタイ...
おすすめ情報