尽量把Where后面给出的条件所要用的字段建立索引,
避免使用like, 避免在where中使用is null或者is not null,
另外,先要限制从两张表取的数据,最后才写两表关联的字段(两表连接的条件)

解决方案 »

  1.   

    强制索引;
    少用IN,用EXISTS;
    可以的话,多建临时表;
    ……升级硬件
      

  2.   

    升级硬件是不可能了。
    关联索引已经建立,查询要用到的字段也都做了索引,没有IN、LIKE、IsNULL等。现在主要是查询返回的数据量很大,造成查询经常超时。
      

  3.   

    技术上提高查询办法:建立合适的索引,避免用影响查询速度的条件,比如in、%等,如果可以作partition的,就作partition,尽量分段查询。
    两个大表关联查询,属于业务问题:数据量巨大,本身就是很费时间的事。像移动、电信,基本上不给打印1年的帐单,就是避免数度太慢影响业务。
      

  4.   

    关键看你做什么样的关联操作,where条件很重要(是否用了in/not in,like等条件),还有是否用了union(因为union all 的执行要比union快很多)
      

  5.   

    我的优化方法:
    1:关键字建立索引
    2:ID采用LONG型而不采用varchar,对于海量数据的查询可以提速很多
    其它的,有待楼下进一步提供
      

  6.   

    :(
    只能建议用户按条件分批查询了。查询返回的记录集太大就会出现snapshot too old。