千万级以上的大表查询 优化,除了索引、分区之外,还有什么其他有效的方法。表table1 有1100万的数据,sql语句:insert into table2 select col1,col2 from table1 语句执行了50秒,这个时间合理吗?

解决方案 »

  1.   

    感觉还是合理的。千万级数据本身的数据文件已经很大了。
    那么作DML必然不会效率太快。
      

  2.   

    insert into table2 select col1,col2 from table1 语句执行了50秒
    主要看select col1,col2 from table1语句执行需要多久了,无条件千万条数据,50秒应当算快的吧
      

  3.   

    那怎么优化才能使这个select语句速度加快,比如把table1进行分区,然后并行查询,会有用么?
      

  4.   

    如果做了分区的话select col1,col2 from table1没有带上分区的条件速度快不到哪去吧?
      

  5.   

    我的意思是,分区的同时用并行,速度会不会快点。并行好像有两方面的并行吧:一方面是cpu多进程,一方面是io并行吧。
      

  6.   

    进一步问两个问题:
    1、
    现在的性能问题就出在这里:select col1,col2 from table1。只要这句速度快了,整体就快了。table1表有1100万的数据,算比较大的了。有什么方法提高这个查询的速度,注意是不带where条件的全表查询。
      

  7.   

    用 ORACLE parallel 关键字来并行处理
      

  8.   

    where 条件都没有,全表扫描无所谓快不快,你把表弄小点就快了。