子查询优化

子查询执行效率不高的原因:

1.执行子查询时,MySQL需要为内层查询语句的查询结果建立一个临时表,然后外层查询语句从临时表中查询记录,查询完毕后再撤销临时表,这样会消耗过多的CPU和IO资源,产生大量慢查询

2.子查询的结果集存储的临时表,不论是内存临时表还是磁盘临时表都不会存在索引,所以查询性能会受到一定的影响

3.对于返回结果集比较大的子查询,其对查询性能也有一定的影响

优化:

建议在MySQL中使用连接(join)查询来替代子查询,连接查询不需要建立临时表,其速度比子查询要快,而且可以添加索引进一步优化性能