count(*)和count(release_year)的区别:
count(*)统计满足条件的记录数release_year=null的记录也会被统计,count(release_year)则会排除为null的结果再统计。
子查询优化时,如果是一对多查询,使用join on时要用distinct去重
如果子查询in中有重复的数据,从查询的结果是看不出来的,因为in(1,1)只会返回一条记录.但是join会显示两条.尽量用join
group by可能会出现临时表(Using temporary),文件排序(Using filesort)等,影响效率。
可以通过关联的子查询,来避免产生临时表和文件排序,可以节省io
如果涉及到表联接的过程中有group by这样的语句,可以先通过group by做为子查询,统计出结果后,再与其它表进行关联查询。
优化group by 查询后,要在外面加上筛选条件则在子查询中增加