关于mysql使用explain看执行计划的变化

今天有个同事找我解决一个SQL优化的问题。我去看了下,在生产环境上,通过explain查看这个SQL语句执行计划是全表扫描,并没有用到索引,数据量大概在50万左右。通过分析,针对where字段已经建立了索引,而且这个SQL使用的查询条件也都很简单,也就用了in,按道理是可以使用索引查询的。按我之前的开发经验,这应该就是同一SQL在不同环境不同的数据量下执行计划是会发生变化的,为了证实这一想法,我把这个SQL放到测试环境执行,数据量大概几千,结果是使用了索引查询。针对这种情况,我们需要对业务情况进行分析,看看字段的基数是多少,索引不能滥用,可选择性高的字段才建立索引比较好,而且索引也不能过多,会影响到增删改,最好不超过5个吧。经过分析,调整了一些字段索引,终于是把性能提高上来了。

猜你喜欢

转载自blog.csdn.net/guotufu/article/details/81176595