a,b使用索引
c由于%放到了字符串开始,所以只能走全表扫描
d由于password没有索引,且用的or进行判断,所以也只能走全表扫描

解决方案 »

  1.   

    12:35:37 SQL> create table t1(username varchar(10),passowrd varchar(10));表已创建。已用时间:  00: 00: 00.16
    12:35:38 SQL> insert into t1 values ('abc','123');已创建 1 行。已用时间:  00: 00: 00.16
    12:35:52 SQL> insert into t1 values ('dcde','fff');已创建 1 行。已用时间:  00: 00: 00.15
    12:36:02 SQL> set autotrace on exp
    12:36:07 SQL> create index test on t1(username);索引已创建。已用时间:  00: 00: 00.09
    12:36:24 SQL> select * from t1 where username like 'abc%';USERNAME   PASSOWRD
    ---------- ----------
    abc        123已用时间:  00: 00: 00.31Execution Plan
    ----------------------------------------------------------
       0      SELECT STATEMENT Optimizer=CHOOSE
       1    0   TABLE ACCESS (BY INDEX ROWID) OF 'T1'
       2    1     INDEX (RANGE SCAN) OF 'TEST' (NON-UNIQUE)
      

  2.   

    我觉得模糊查询是用不上索引的,虽然不能确定。
    D为什么错。passwd用不上索引和有关系吗?如果是and的话D还是不是错的?
    希望能详细解释一下。分不够可以加。:)
      

  3.   

    龙组宗,,能不能说一下如果D是and的话会如何?
      

  4.   

    请教一下  zmgowin(隐者(龙祖宗)) 为什么我set autotrace on 总是失败呢?SQL> set autotrace on
    Cannot SET AUTOTRACESQL> set timing on   --这个可以
    SQL> 
    数据库是:Oracle9i for Linux 
    普通用户和system 用户的结果一样能不能解释一下,set autotrace on 有什么前提条件谢谢!!
      

  5.   

    使用AND一般情况下会使用索引.SQL> set autotrace on
    Cannot SET AUTOTRACE
    这个语句是在PL/SQL Devepoer中执行的吧,在这个工具里不能执行,在sqlplus中执行才可以。
      

  6.   

    to: hollyzp(大树) 我是在PL/SQL Devepoer 下执行的我已经大概知道要怎么用了,谢谢哦~~
    呵呵
      

  7.   

    pl/sql  developer中可以直接右键看执行计划.
    set autotrace on是在sql*plus中执行的.to  ddadoris(马+爵) 
    能不能说一下如果D是and的话会如何?
    =================================
    会使用索引,
    但如果and后面包含了not != <>或者like '%aa'等等操作时索引也将失效.