咨询一个怪异的SQL问题

select * from (select boss...... from .... where..... )
where boss=3000

其中(select boss...... from .... where..... )临时的表的记录只有20000多条,全部显示出来只要10秒。
按照道理,条件boss=?就是一个全表扫描,但是如果把最后的条件boss=3000改成别的值,查询很快就能返回,但是如果换成3000的话,查询就出不来,请问一般这是什么问题造成的,谢谢。
我也来说两句 查看全部回复

最新回复

  • wyjasba (2008-7-23 17:16:20)

    把表结构贴出来
    索引情况
  • towerjt (2008-7-23 17:24:47)

    这跟表结构索引没什么关系吧,我希望能得到大侠们的指导,这种问题,应该从哪里着手去分析问题,谢谢
  • hjwb1216 (2008-7-23 21:16:00)

    首先不谈你这样写是否合理
    你的boss上面是否有索引?如果有的话,字段类型是否说number型?再看看index的分析时间,如果数据过于成旧的话,把索引分析一把吧
  • philip_zhong (2008-7-24 17:52:04)

    你构造一个临时表试试
    with tmp as
    (select boss...... from .... where..... )
    select * from tmp where boss=3000;