チューニング
SQLの実行 構文解析 ⇒ 実行計画の立案 ⇒ SQLの実行 ⇒ レコードの読み取り
SQL文の場合(Oracle)
プログラミングの場合
★SQL文の実行手順
(8)SELECT (9)DISTINCT (11)TOP <select_list>
(1)FROM <left_table>
(3)<join_type> JOIN <right_table>
(2)ON <join_condition>
(4)WHERE <where_condition>
(5)GROUP BY <group_by_list>
(6)WITH {CUBE | ROLLUP}
(7)HAVING <having_condition>
(10)ORDER BY <order_by_list>
★漏斗ルール
※上位の方は性能に影響が大きい
★実行計画
Oracleの場合
事前準備(一度だけ)
C:\>sqlplus sys/change_on_install as sysdba sysdbaでログイン
SQL> @?/sqlplus/admin/plustrace.sql plustraceロールの作成
SQL> grant plustrace to andy; AUTOTRACE機能をユーザに権限付与
SQL> exit
C:\>sqlplus andy/andy@orcl
SQL> @?/RDBMS/ADMIN/utlxplan.sql
PLAN_TABLE表を作成(Oracle9i必要、Oracle10g不要)
SQL> SET AUTOTRACE ON/TRACEONLY/OFF
SQL> SELECT * FROM ...;
・TABLE ACCESS FULL 全件検索
・INDEX RANGE SCAN 索引検索
SQL>conn system/oracle
SQL>grant plustrace to <USER>;
SQL>disconn
SQL>conn <USER>/<PASSWORD>
SQL>set pages 0
SQL>set lines 10000
SQL>set autotrace on set autotrace traceonly 検索結果を出力せず
SQL>set timing on
SQL>r 再実行
MySQLの場合
mysql> use demodb;
mysql> EXPLAIN SELECT * FROM ...;
D
★実行計画の解析方法(Oracle)
★結合処理に関するチューニング・テクニック
マテリアライズド・ビュー(Materialized View)
1.リモートDB上に存在するデータをローカルDB上に定期的にコピーするため
2.ローカルDB上のデータの集計や結合処理を高速化するため
※ON COMMITオプションを指定する場合、元表に対する更新処理のパフォーマンスが劣化する恐れがある
※クエリーリライト機能を利用することで、SQLを変更せずに、MViewを利用することが可能
BITMAP JOIN INDEX
クラスタ