索引について
- 索引とは
索引とは、DB上のデータを効率的に取得するために使用するDBオブジェクトのこと
ルートブロック、ブランチブロック、リーフブロック
ルートブロックには、ブランチブロックへのキーの範囲と下位ブロックのポインタが入っている、
リーフブロックには、ROWIDとキー値が入っている。
- 索引の種類は
- 索引の中身を見てみよう
ROWID ------------------ AAAZBiAAEAAAAOEADt AAAZBiAAEAAAAOEADu AAAZBiAAEAAAAOEADv SQL> select * from sales where rowid = 'AAAZBiAAEAAAAOEADv'; SALEID QUANTITY CUSTOMERID PRODUCTID EMPLOYEEID SALEDATE ---------- ---------- ---------- ---------- ---------- -------- 998 1 14 8 23 07-08-28 SQL> analyze index sales_index compute statistics; 索引が分析されました。 SQL> select HEIGHT,BLOCKS,NAME,LF_ROWS,LF_BLKS,BR_ROWS,BR_BLKS from index_stats; HEIGHT BLOCKS NAME LF_ROWS LF_BLKS BR_ROWS BR_BLKS ---------- ---------- ------------------------------ ---------- ---------- ---------- ---------- 2 8 SALES_INDEX 1001 2 1 1
Oracleパフォーマンス障害の克服(3):Bツリーインデックスに最高のパフォーマンスを (2/4) - @IT
ANALYZE
■マージジョイン
SQL> r 1* select * from sales s,products p where s.productid = p.productid 1000行が選択されました。 実行計画 ---------------------------------------------------------- Plan hash value: 3026272181 --------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1000 | 44000 | 6 (17)| 00:00:01 | | 1 | MERGE JOIN | | 1000 | 44000 | 6 (17)| 00:00:01 | | 2 | TABLE ACCESS BY INDEX ROWID| PRODUCTS | 50 | 1000 | 2 (0)| 00:00:01 | | 3 | INDEX FULL SCAN | SYS_C0015209 | 50 | | 1 (0)| 00:00:01 | |* 4 | SORT JOIN | | 1000 | 24000 | 4 (25)| 00:00:01 | | 5 | TABLE ACCESS FULL | SALES | 1000 | 24000 | 3 (0)| 00:00:01 | --------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 4 - access("S"."PRODUCTID"="P"."PRODUCTID") filter("S"."PRODUCTID"="P"."PRODUCTID") 統計 ---------------------------------------------------------- 0 recursive calls 0 db block gets 84 consistent gets 0 physical reads 0 redo size 42393 bytes sent via SQL*Net to client 1246 bytes received via SQL*Net from client 68 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 1000 rows processed SQL>