Get the App
SLTechnology News&Howtos  ›  Database  › 

MySQL 8.0.18 Optimizer adds AntiJoin Anti-connection Optimization

Shulou Source: shulou.com Published: 2022-06-01 22:15:48 09月24日 Update

In MySQL 8.0.18, the optimization of NOT IN/ exists subquery statements is supported, and the query is automatically rewritten into AntiJoin disjoin query SQL statements within the optimizer.

Usually, we want to complete the query results in the inner table first from the inside to the outside, and then drive the outer query table to complete the final query, but the subquery will first scan all the data in the appearance, and each piece of data will be passed to the inner table to be associated with it. If the appearance is very large, then the performance will be very poor.

Let's look at an example.

Explain select * from T1 where id not in (select id from T2)

Inside the optimizer, the not in subquery is rewritten as the following statement

Explain select T1 * from T1 left join T2 on t1.id=t2.id where t2.id is null

Comparing the two implementation plans, the result is the same.

Tags: Queries statements appearance data results large Admiral two examples performance situation version Table facade relevance support driver Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Apple vpn Microsoft MySQL Shulou Tech Info