チューニング

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

クラスタ