创建索引阿,同时要优化你的sql语句,最好不要使用not in 或者exist之类的关键字

解决方案 »

  1.   

    1建立适当的索引
    2优化你的sql语句exists还是可以用的,最好别用not in 或者 in
    3选用适当的优化模式,选择好是基于哪种优化模式查询
      

  2.   

    如果查询返回的数据不多,两表按查询条件建立索引就可以了如果查询返回的数据很多,两个表中相对小的表就不要索引了(小表做full table scan,大表做index scan),可以从一下几个方面提高小表的full scan速度:
    1.采用大的db_block_size
    2.如果查询的数据按时间或空间分布,对表建分区,用分区查询
    3.利用并行查询(如果CPU只有一个,本条不考虑)
    4.增大db_file_multiblock_read_count,至少64以上
    5.如果阵列有两个以上的RAID,把那两个表空间放在不同的RAID上
      

  3.   

    影响到查询的速度的原因很多,如这条语句(select * from temp),你说它的查询速度会快吗????
    那你明白它的执行原理吗???它实际上执行了两次查询,不会吧,怎么会执行了两次呢??其实就是两
    次呀,首先要检索(*)数据库中的字段值,如果表的字段过多时,查询速度将会很慢的。
    你们都知道吗???????
    办法还是有的呀
    你可以为你的查询语句建立索引呀????????????
      

  4.   

    我总结一下大家的意见,是不是这样:1、在表1所在的表空间上建立表2的索引;
    2、然后作表1和表2索引的关联查询。注:我的速度主要慢在跨表空间上,如果这两个表在同一表空间上速度就快得多,我也不知为什么跨表空间的关联查询这么慢。表空间的物理分布如下:|  DISK1  |  DISK2  |  DISK3  |  DISK4  |  DISK5  |  DISK6  |
    |         |         |         |         |         |         |
    ————————————————————————————————
          表空间1          表空间1           表空间1
    ————————————————————————————————
    ————————————————————————————————
          表空间2          表空间2           表空间2
    ————————————————————————————————
    |         |         |         |         |         |         |
      

  5.   

    to rayfly:《二百万条以下的数据建索引没有什么意义,维护索引的消耗反而更大》 佩服!基本上除了电信、移动、金融以外的地方超过200万数据量的极少见,90%以上的dba该回家种田了。