3

以下のように、Oracle SQo Server を使用してデータベースからデータを取得する SQL クエリがあるとします。

select  distinct ORDER_TYPE_name as ORDER_TYPE from 
PRODUCT_MASTER_LIST where PROJECT_ID = 99999
order by  ORDER_TYPE ASC 

現在、次の注文タイプを持つ 5000 件のレコードがあります。

Red
Yellow
Green
Black 
null
Unclassified

クエリの実行時間を短縮してパフォーマンスを最適化するには?

注 実行計画を見ると、テーブルを介したフル アクセスが多数ありますか?

4

3 に答える 3

4

これらの 2 つの列にインデックスを定義して、テーブル スキャンを防ぐことができます。これにより、実行時間が大幅に短縮されるはずです。

CREATE INDEX IX_ProductMasterList_OrderType 
ON PRODUCT_MASTER_LIST(PROJECT_ID, ORDER_TYPE);
于 2012-09-27T05:11:19.273 に答える
1

PROJECT_ID のインデックスが正しい解決策になると思います。このカラムの選択性に依存します。

CREATE INDEX PRODUCT_ML_PRODUCT_ID_IDX ON PRODUCT_MASTER_LIST(PRODUCT_ID);
于 2012-09-27T08:56:37.927 に答える
0

クエリを頻繁に実行してバインド変数を作成する場合は、パフォーマンスが大幅に向上します。

例:

create or replace procedure dsal(p_empno in number)
as
  begin
    update emp
    set sal=sal*2
    where empno = p_empno;
    commit;
  end;
/

さらに、クエリする予定の列にインデックスを作成します。

CREATE INDEX 
   ix_emp_01 
ON 
   emp (deptno) 
TABLESPACE 
   index_tbs;

TABLESPACE 句はオプションであることに注意してください

于 2012-09-27T05:15:19.473 に答える