另demo1.a的字段上,我已经创建了索引。

解决方案 »

  1.   

    demo1.id是primary key,已经有索引了:(
      

  2.   

    like查询不会用到索引的。
    将demo1.a like这句改为:
    (get_sn = '0' or demo1.a = get_sn)
    试一下能不能解决问题,同时又不影响得到的数据。
      

  3.   


    demo1.a like decode(get_sn,'0','%',get_sn)
    这句改为(demo1.a = get_sn or get_sn = '0')
      

  4.   

    decode 语句修改后没有太大的收效:(
    怎样对表建分区亚?
      

  5.   

    直接运行
    select demo1.a,demo2.b,……
    from demo1,demo2
    where demo1.id=demo2.id
    and (demo1.a = get_sn or get_sn = '0');
    而不是select * from demo_V 速度如何?优化好像只有针对get_sn了。如果不加条件查询View的机会(select * from demo_V)比较少,建议将(demo1.a = get_sn or get_sn = '0')移出View而加在对View进行查询的语句中
    select * from demo_V where a = get_sn or get_sn = '0'
      

  6.   

    直接运行
    select demo1.a,demo2.b,……
    from demo1,demo2
    where demo1.id=demo2.id
    and (demo1.a = get_sn or get_sn = '0');和select * from demo_v速度相差不太大。现在表中的数据还只是一部分测试数据,正式使用以后,日积月累,表中的数据会更多:(之所以直接在创建视图时加上get_sn的限定,是因为这个视图在很多程序里被使用.如果创建视图时不加get_sn,那么就要修改很多程序,这样会增加工作量并给程序今后的维护升级带来很多麻烦,:(