1

合計 198695 レコードと project_id =555 の 96579 レコードを含むテーブルがあります。project_id でテーブルを分割したリスト間隔があります。以下のクエリを実行すると(個別なし)、実行に0.75秒かかります。

SELECT  KW,SEARCH_VOLUME,TARGET_URL,KEYWORD_TYPE,RANK_DATE,RANK,URL,DOMAIN
from alps_project_theme_kw_v where  min_rank =1 and project_id = 555;

一方、distinct を追加して以下のクエリを実行すると、実行に 15 秒かかります

SELECT distinct KW,SEARCH_VOLUME,TARGET_URL,KEYWORD_TYPE,RANK_DATE,RANK,URL,DOMAIN
from alps_project_theme_kw_v where  min_rank =1 and project_id = 555;

今のところ、個別クエリと非個別クエリの両方でフェッチされた結果は同じです (1636 行) クエリをさらに調整する方法を提案してもらえますか? 注意してください: - 上記のように project_id でテーブルをパーティション分割して分析しただけで、インデックスは作成していません。

4

2 に答える 2

0

project_id にインデックスを追加すると、実行時間が大幅に短縮されることをお勧めします。ベース テーブルにインデックスを追加したくない場合は、o/p を一時テーブルにコピーし、一時テーブルにインデックスを作成してから個別のクエリを実行すると、15 秒よりも高速になると思います。

于 2013-07-31T06:48:00.093 に答える
0
    Use hints from oracle, 

    for e.g. SELECT /*+ INDEX(INDX1,IDX2) */ * FROM v;

    for fast retrieval of data use  

    SELECT /*+ FIRST_ROWS(100) */ * FROM v;


    try to use combination of column which are in same index 

Refer : 

    http://docs.oracle.com/cd/B19306_01/server.102/b14211/hintsref.htm
于 2013-07-31T06:50:43.667 に答える