最近因工作需要,客户需要把一些表中数据全部导出,由于表中数据量巨大,开始的时候,查询特别慢,我想应该是进行全表扫描了,于是对SQL进行了调优,废话不多说,先来看看我是如何调优的吧,
1:首先我们需要选择正确的存储引擎,先来简单介绍下存储引擎吧。
MySQL有两个存储引擎MySAM和InnoDB, 每个引擎都有利有弊。MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM 对于 SELECT COUNT(*) 这类的计算是超快无比的。
InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。他是它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。
Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB,因为我需要查询表平时主要是写入的比较多,查询相对来说要少些,所以就默认的InnoDB。
查看当前mysql默认引擎: show variables like '%engine%';
2:给查询条件上的字段建立索引,但是索引字段不能太多&#