Switchable Optimizations 1784 Controls materialization (including semijoin materialization). For more information, see Skip Scan Range Access Method. Controls use of Skip Scan access method. For more information, see Section 8.2.2.1, “Optimizing IN and EXISTS Subquery Predicates with Semijoin Transformations” . If  semijoin  and  materialization  are both  on , semijoins also use materialization where applicable. These flags are  on  by default. If the  duplicateweedout  semijoin strategy is disabled, it is not used unless all other applicable strategies are also disabled. The  semijoin ,  firstmatch ,  loosescan , and  duplicateweedout  flags enable control over semijoin strategies. The  semijoin  flag controls whether semijoins are used. If it is set to  on , the firstmatch  and  loosescan  flags enable finer control over the permitted semijoin strategies. Controls all semijoin strategies. Controls the semijoin LooseScan strategy (not to be confused with Loose Index Scan for  GROUP BY ). Controls the semijoin FirstMatch strategy. Controls the semijoin Duplicate Weedout strategy. For more information, see Section 8.2.1.11, “Multi-Range Read Optimization” . Controls use of cost-based MRR if  mrr=on . Controls the Multi-Range Read strategy. • mrr  (default  on ) • mrr_cost_based  (default  on ) •Semijoin Flags • duplicateweedout  (default  on ) • firstmatch  (default  on ) • loosescan  (default  on ) • semijoin  (default  on ) In MySQL 8.0.17 and later, this also applies to the antijoin optimization. •Skip Scan Flags • skip_scan  (default  on ) •Subquery Materialization Flags • materialization  (default  on ) • subquery_materialization_cost_based  (default  on )