如何优化以下的一个sql语句

表结构如下:

-- Create table

create table TEST

(

  OBJECT_ID   VARCHAR2(15) not null,

  OBJECT_NAME VARCHAR2(128),

  OBJECT_TYPE NUMBER

)

tablespace SYSTEM

  pctfree 10

  pctused 40

  initrans 1

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

-- Create/Recreate primary, unique and foreign key constraints 

alter table TEST

  add constraint PK_OBJECT_ID primary key (OBJECT_ID)

  using index 

  tablespace SYSTEM

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

-- Create/Recreate indexes 

create index OBJECT_ID_INDEX on TEST (OBJECT_ID DESC)

  tablespace SYSTEM

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create index OBJECT_TYPE on TEST (OBJECT_TYPE)

  tablespace SYSTEM

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );

create index OBJECT_TYPE_IND on TEST (OBJECT_TYPE, OBJECT_ID)

  tablespace SYSTEM

  pctfree 10

  initrans 2

  maxtrans 255

  storage

  (

    initial 64K

    minextents 1

    maxextents unlimited

  );
表的记录大概有10万-500万条的记录:
需要执行的sql语句为:
select *

  from (select * from test t where object_type = 3 order by object_id)

 where rownum < 10
通过观察执行计划为全表扫描,执行的时间大概在2秒以上,并且尝试过使用索引提示也没有作用,请各位高手帮忙看看。
如果我在object_id 上建立一个desc的索引,执行时间大概在1秒以内。
另外:
   如果我把object_id 为number类型的话,则查询在0.0n秒。
请各位帮忙看看可以在什么地方可以优化。
如果在生产环境的话,object_id 的类型是很难去变更的,因为要考虑到应用的兼用性是否有问题。
 
 
 

你可能感兴趣的:(sql,优化,object,table,System,constraints)