log表上建了一个联合索引,LogLevel+LogDate
用Toad看
执行Select * from log where logevel ="01"--就会执行Full tabel scan
执行Select * from log where logdate= sysdate --就会执行index skip scan为什么会出现这种效果?

解决方案 »

  1.   

    如果索引是建立在多个列上,比如(列1,列2)where 列1=XX 
    where 列1=XX and 列2=XX
    会用到索引where 列2=XX
    不会用到LZ是不是写反了?
      

  2.   

    CREATE INDEX "Test"."IX_DATE_LEVEL_APPID" ON "Test"."LOG" ("APPID", "LOGDATE", "LOGLEVEL")Select * from log where appid= "01" -- full table scan
    Select * from log where logdate = sysdate -- index skip scan搞不懂了,真奇怪阿。。
    还有什么可能?
      

  3.   

    看看执行计划,如果你使用的是CBO的话,系统有可能使用full table scan,你可以使用hints提示系统使用index
    比如
    select /*+index(log,ix_date_level_appid)*/ * from log where appid='01'
      

  4.   

    select * from log where appid='01' and logdate=sysdate and loglevel=' ';这样会用到什么啊
      

  5.   

    在cbo下如果检索的数据高到一个百分比
    也会用Full   tabel   scan