新换的公司,一个表中的数据竟然有29G之大,我顿时就懵了,更让我惊讶的是,还与另一个1G多的表做关联查询,真是让我摸不着头脑,尤其这是mysql数据库,也是惊出了我一身冷汗,好在还有优化的解决方案,下面简单谈一下我的解决方案。

  1. 尽量不要用inner join,内连接查询速度慢,建议为left jion。
  2. 建立索引,两个表中关联的字段都要加上key,可以为主键索引,唯一索引,普通索引等。
  3. limit 分段处理,每次取2000条,处理完之后再取数据处理。
  4. mysql数据库优化,将InnoDB的类型改为MyISAM,MyISAM数据引擎更适合大数据的搜索查询。
  5. 优化数据库,使用存储过程式查询,存储过程优势是查询一次后再次查询会很快。
  6. 利用Explain获取的信息来实现mysql优化,参考地址:http://www.cnblogs.com/promise-7/archive/2012/05/25/2517356.html

其实归根结底是数据库方面的优化,当然数据量很大的情况下,要提前预知好,更换数据库是避免查询宕机的关键,如果提前预知用oracle数据库的话,就不会出现现在的情况,现在改数据库,花费的代价很大。