1、尽可能减少Join语句中的NestedLoop的循环总次数。最直接的方法就是让的结果集尽可能的小,也是优化基本原则之一“永远用小结果集驱动大的结果集”。
2、保证Join语句中被表中Join条件字段已经被索引。在多表Join的时候已有的索引被使用,也会提高查询的效率也是优化的一个可行方法。
3、优化NestedLoop的内层循环。在数据库的Join中应该做的,内层循环是循环中执行次数最多的,每次循环节约很小的资源,在整个循环中就能节约很大的资源。
4、如果无法保证被驱动表的Join条件字段蹲赓忧甘被索引且内存资源充足的前提下,则需要JoinBuffer。在某些特殊的环境中,我们的Join必须是All,Index,range或者是index_罪焐芡拂merge类型的时候,JoinBuffer就会派上用场了。
5、确保尽可能多的匹配满足条件,减少Where的执行。在数据库中Join仅在匹配阶段完成以后,Where子句条件才会被使用。