系统是:win 2003+oracle 10g,都是64位的系统!
 我现在运行一个sql句子:
 select * from tam_staff_area a,tam_staff b where a.staff_id=b.staff_id and a.area_id like '0203001%'
 问题的奇怪在于如果a.area_id like '0203001%'写成一个值,比如是0203001的话就不动弹了,我查看系统的情况,发现也没有相关的表被锁住,如果这里写成其它任何值都可以很快得到结果!
 我变另外一种写法,比如:
   select * from tam_staff_area a,tam_staff b where a.staff_id=b.staff_id and (a.area_id like '02030010%' or a.area_id = '02030010')
  也没有问题!
  请问这是个什么情况?

解决方案 »

  1.   

    在oracle中锁不会影响查询的。关注一下。。
      

  2.   

    所谓的“不动弹了”是否指执行那个SQL无任何响应?你检查了数据库那个时候CPU等是否很忙?可能是在执行,只不过还没执行完。查看
    select * from tam_staff_area a,tam_staff b where a.staff_id=b.staff_id and a.area_id like '0203001%'

    select * from tam_staff_area a,tam_staff b where a.staff_id=b.staff_id and (a.area_id like '02030010%' or a.area_id = '02030010')
    的执行计划是否不同。
    tam_staff_area和tam_staff各有多少记录?有什么索引?
      

  3.   

    不能用固定的值,因为我的这些句子是嵌入到asp中的,这个值也是变化的!
       反正这个问题台奇怪了!
      

  4.   

    还有一个现象,就是我将这个sql句子运行之后,结果出不来,我查看锁的情况,没有 发现被锁的表,但是我在对这里面的一个表进行操作的时候,比如truncate或drop等操作的的时候出现表被锁的信息!
        我觉得上面有位热心人说得不错,我等会运行的时候看看"执行计划"!
      

  5.   

    关注这个问题,area_id 是什么类型?oracle 中select是不加锁,你也可以试下delete,insert时,表有没有被锁住.