sql >> データベース >  >> RDS >> Oracle

Oracleでのインデックス作成時間の見積もり

    Oracleは、EXPLAIN PLANを使用して、インデックスの作成時間とインデックスのサイズを見積もることができます。 コマンド:

    サンプルスキーマ

    --Create a table with 1 million rows.
    drop table table1;
    create table table1(a number);
    insert into table1 select level from dual connect by level <= 1000000;
    --Gather statistics.
    begin
        dbms_stats.gather_table_stats(user, 'table1');
    end;
    /
    --Estimate index creation and size.
    explain plan for create index table1_idx on table1(a);
    select * from table(dbms_xplan.display);
    

    結果

    Plan hash value: 290895522
    
    -------------------------------------------------------------------------------------
    | Id  | Operation              | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
    -------------------------------------------------------------------------------------
    |   0 | CREATE INDEX STATEMENT |            |  1000K|  4882K|   683   (2)| 00:00:10 |
    |   1 |  INDEX BUILD NON UNIQUE| TABLE1_IDX |       |       |            |          |
    |   2 |   SORT CREATE INDEX    |            |  1000K|  4882K|            |          |
    |   3 |    TABLE ACCESS FULL   | TABLE1     |  1000K|  4882K|   254   (5)| 00:00:04 |
    -------------------------------------------------------------------------------------
    
    Note
    -----
       - automatic DOP: skipped because of IO calibrate statistics are missing
       - estimated index size: 24M bytes
    

    メモ

    私のシステムでの実際の作成時間は、推定10秒に対して、2.5秒でした。ただし、桁違いの見積もりの​​みを探している場合は、それでも十分です。精度は、正確なテーブル統計と、優れたシステム統計 。 (ただし、システム統計を収集する前に注意してください。多くの実行プランに影響を与える可能性があります!)sys.aux_stats$を手動で変更することで、設定をさらにいじることができます。 。これは、変更しても問題ない数少ないSYSテーブルの1つですが、それでも注意が必要です。



    1. 結果セットに基づいてビューの基になる列を取得します

    2. ORACLEのスリープ機能

    3. PHP/MySQL挿入で一重引用符をエスケープしても機能しない

    4. phpランダムmysqlデータ