コメントあれば、よろしくお願い致します。
0 recursive calls
0 db block gets
7,800,000 consistent gets --select文でアクセスしたバッファキャッシュのブロック数。ディスクとメモリへの総アクセス数 A
3,500,000 physical reads --ディスク上のデータファイルにアクセスしたデータ要求の総ブロック数 B
0 redo size
219,000,000 bytes sent via SQL*Net to client
7,100,000 bytes received via SQL*Net from client
500,000 SQL*Net roundtrips to/from client
100 sorts (memory) --メモリ内でソートした回数 C
0 sorts (disk)
9,200,000 rows processed --処理対象となった行数 D
一番、重視しなければいけないのは、A だと思っています。
780万回もアクセスされていますが、
ブロック数が 8K に設定されている環境であったとして、
1024*8*780万 = 63,897,600,000約 63GB の i/o が一つのSQLで発生
B に関しても一応計算してみると、
1024*8*350万 = 28,672,000,000約 28GB の i/o が一つのSQLで発生
D に関しては、920万行という結果は分かるが、1行辺りの幅が分からないので、
幅を別途SQLから計算し、どういった負荷を与えている文なのかを分析する必要がある。
select statement optimizer=choose
からの数十行には、
(FULL)が、(UNIQUE INDEX)に比較して、10倍ぐらい表示されていると仮定します。
それぞれの検索テーブルの件数ははっきりしていたとして(1件~2000万件ぐらい(400万件以上が5テーブル))、
何をどうするのがSQLチューニングでしょうか。
No.3ベストアンサー
- 回答日時:
>一番、重視しなければいけないのは、A だと思っています。
私はBだと思います。
ディスクアクセスはメモリアクセスの比較にならないくらい遅いですから。
>9,200,000 rows processed --処理対象となった行数 D
900万件も一気にクライアントに送って処理させるのですか?
こういった処理はPL/SQLなどで任せたほうがいいような気がします。
>(FULL)が、(UNIQUE INDEX)に比較して、10倍ぐらい表示されていると仮定します。
TABLE FULL SCANが悪とは言わないですが、件数の多いテーブルを
(FULL)にしないようにしたほうがいいと思います。
対象件数が多い(多すぎる)ので、どこまで絞れるのかは不明ですが、
処理的に思いのであれば一気にやろうとせずに一時表のようなものに
退避させるとかしたほうが良いのでは?
No.1
- 回答日時:
SQLのチューニングは実行計画(結合順序とアクセスパス)と
統計情報で1つです。つまり一方のみ提示して
どうですか?と言われても回答するのが難しいです。
明細のない家計簿を見ているようなものです。
今、提示している統計は explain(autotrace)のものですよね?
面倒ですが explainではなく sql_traceを使用することを薦めます。
SQLチューニングを理解したい場合には
パフォーマンス・チューニング・ガイド(SQLの最適化)を読んでみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
同一レコード更新時の排他制御
-
[性能改善]AccessのDBに大量の...
-
同じSELECT文同士でのデ...
-
Data Pump で大量データインポ...
-
他ファイルのテーブルの情報を...
-
データを削除しても表領域の使...
-
Access レコードを追加できませ...
-
Viewにインデックスは張れ...
-
postgreSQLのint型は桁数指定が...
-
INDEXの無効化
-
テーブルのSTORAGE句のサイズ設定
-
SQL*Loaderで、データを加工し...
-
viewのバックアップ
-
ACCESS 複数テーブル・複数フィ...
-
エクセルからアクセスにインポ...
-
SQLでスキーマ名(所有者名)の...
-
datapumpの実行方法について
-
ORA-00959: 表領域'****'は...
-
データ削除の方法
-
CLOB型へのINSERT
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DELETE文でFROM句を省略した場合
-
他の処理でselectさせないよう...
-
RDBのテーブル種類の違い
-
object browser で処理を中断す...
-
同じSELECT文同士でのデ...
-
accessでイベントを中止するよ...
-
[性能改善]AccessのDBに大量の...
-
PL/SQLの平行処理について
-
年度毎にシーケンスの初期化?
-
同一レコード更新時の排他制御
-
ActiveX DLLでのオラクルのトラ...
-
統計情報の取得=コミットですか?
-
Truncate以外で高速にテーブル...
-
DBリンクエラーについて
-
select for updateのロック
-
Access2013で操作ログを残した...
-
1件あたりの処理時間を検討する...
-
チューニング対象のSQLの見つけ...
-
行ロックとテーブルロックについて
-
Oracleの欠点
おすすめ情報