从SQL执行的原理来说,你应该把你的两个表名,调整一下顺序。把那个user放在前面。

解决方案 »

  1.   

    试过了,把user表放在前面没用,还是一样的慢!
      

  2.   

    贴出你的执行计划!
    字段userid有没有索引啊.在sqlplus显示出来慢,不代表查出来慢.
      

  3.   

    oracle多表解析是从右往左解析.所以一般把小表放在右边.
      

  4.   

    analyze table user compute stastics.
      

  5.   

    我不同意 Croatia(Croatia)网友的观点(调整表的顺序).也不同意 yangqingdelphi() 的观点(把小表建在右边),这些将右oracle的优化器来决定.
    楼主可以这么做试试看,
    select 
        b.bookname,
        a.username
    from 
        user a ,
        books b
    where
            1=1
        and a.userid=b.userid+0     --停用200条记录的表的索引.
      

  6.   

    我不同意 Croatia(Croatia)网友的观点(调整表的顺序).也不同意 yangqingdelphi() 的观点(把小表建在右边),这些将右oracle的优化器来决定.
    楼主可以这么做试试看,
    select 
        b.bookname,
        a.username
    from 
        user a ,
        books b
    where
            1=1
        and a.userid=b.userid+0     --停用200条记录的表的索引.