查询语句
select F_POLICYID,F_SERVICETYPE,F_CONTENT_1,F_CONTENT_2  from  t_objectpolicycontent  where F_KIND='37' and F_POLICYID=466  and F_SERVICETYPE=4  order by F_ID desc总共数据量才几万条,但查询却要好久甚至死掉。F_POLICYID,F_SERVICETYPE,F_CONTENT_1已建索引。
F_CONTENT_2为VARCHAR2(600)当不查F_CONTENT_2字段时就快,没有问题。难道F_CONTENT_2为VARCHAR2(600)这个会有这么大的影响?
各位有知道的解答下哦!

解决方案 »

  1.   

    set autot on  --看看执行计划就知道是怎么回事了,估计是使用是全表扫描
     
    试试这个语句,提示使用索引
    select  /*+INDEX(t_objectpolicycontent)*/ 
     F_POLICYID,F_SERVICETYPE,F_CONTENT_1,F_CONTENT_2     from     t_objectpolicycontent     where   F_KIND='37'   and   F_POLICYID=466     and   F_SERVICETYPE=4     order   by   F_ID   desc 
      

  2.   

    objectpolicycontent     表结构贴出来
      

  3.   

    表结构如下
      F_ID          NUMBER not null,
      F_POLICYID    NUMBER,
      F_DETAILID    NUMBER,
      F_BARCODE     VARCHAR2(30),
      F_CARDCODE    VARCHAR2(20),
      F_TERCODE     VARCHAR2(20),
      F_TERMAC      VARCHAR2(50),
      F_TERIP       VARCHAR2(15),
      F_KIND        NUMBER,
      F_SERVICETYPE NUMBER,
      F_CONTENT_1   VARCHAR2(50),
      F_CONTENT_2   VARCHAR2(1000),
      F_BARTIME     VARCHAR2(14),
      F_REGTIME     VARCHAR2(14),
      F_URL         VARCHAR2(255),
      F_OUTERIP     VARCHAR2(15),
      F_CASEID      VARCHAR2(10) default 0,
      F_CLUEID      VARCHAR2(10) default 0
      

  4.   

    学习一下使用执行计划吧使用autotrace工具的方法
    首先创建plan_table表,并赋予权限
    (1)conn system as sysdba
    (2) @[oracle_home]/rdbms/admin/utlxplan.sql
    (3)create public synonym plan_table for plan_table;
    (4)grant all on plan_table to public;
    下一步骤是创建并授予plustrace角色
    (1)conn sys as sysdba
    (2)@[oracle_home]/sqlplus/admin/plustrce.sql
    (3)grant plustrace to public;完成上面步骤后 
    conn 用户名/**** 
    set   autot   on 
    再执行你的查询语句,把执行计划贴出来看看