1

我有一个表,总共有 198695 条记录和 96579 条记录,project_id = 555。我列出了按 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 回答