Bug #102954 1.3 MySQL 8.0 の新機能(オプティマイザ(途中)~)
Submitted: 12 Mar 2021 15:12 Modified: 24 Apr 2021 15:47
Reporter: Hiroyasu Matsuhisa Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Japanese Documentation Severity:S3 (Non-critical)
Version:8.0.23 OS:Any
Assigned to: CPU Architecture:Any

[12 Mar 2021 15:12] Hiroyasu Matsuhisa
Description:
Original Doc. (English)

> In MySQL 8.0.17 and later a WHERE condition having NOT IN (subquery) or NOT EXISTS (subquery) is transformed internally into an antijoin. (An antijoin returns all rows from the table for which there is no row in the table to which it is joined matching the join condition.) This removes the subquery which can result in faster query execution since the subquery's tables are now handled on the top level.

Suggestion (Japanese)

< ♪MySQL 8.0.17 以降では、NOT IN (subquery) または NOT EXISTS (subquery) を含む WHERE 条件は内部的にアンチ結合に変換されます。 ♪(アンチ結合では、結合条件に一致する行が結合されていないテーブルのすべての行が返されます。) ♪これにより、サブクエリーテーブルが最上位レベルで処理されるようになったため、クエリーの実行が高速になる可能性があるサブクエリーが削除されます。
---
> MySQL 8.0.17以降では、NOT IN (サブクエリー) またはNOT EXISTS (サブクエリー) を含む WHERE 条件は、内部的にアンチ結合に変換されます。(アンチ結合は、結合先のテーブルにある、結合条件に一致する行以外のすべての行を返します)。サブクエリーのテーブルが最優先で処理されるようになったことで、遅いサブクエリーが削除されて結果的に問い合わせの実行が速くなります。

Original Doc. (English)

> This is similar to, and reuses, the existing IS NULL (Not exists) optimization for outer joins;

Suggestion (Japanese)

< ♪これは、外部結合用の既存の IS NULL (Not exists) 最適化に似ており、再利用します。
---
> これは、外部結合用の既存の IS NULL (Not exists) 最適化に似ており、それを再利用したものです。

Original Doc. (English)

> Common table expressions.  MySQL now supports common table expressions, both nonrecursive and recursive. Common table expressions enable use of named temporary result sets, implemented by permitting a WITH clause preceding SELECT statements and certain other statements.

Suggestion (Japanese)

< ♪一般的なテーブル式.  ♪MySQL では、非再帰テーブルと再帰テーブルの両方の共通テーブル式がサポートされるようになりました。 ♪共通のテーブル式を使用すると、名前付き一時結果セットを使用できます。この結果セットは、SELECT ステートメントおよびその他の特定のステートメントの前に WITH 句を許可することで実装されます。
---
> 共通テーブル式.  MySQL では、非再帰テーブルと再帰テーブルの両方の共通テーブル式がサポートされるようになりました。共通テーブル式を使用すると、名前付き一時結果セットを使用できます。この結果セットは、SELECT ステートメントおよびその他の特定のステートメントの前に WITH 句を記述する形で実装されます。

How to repeat:
https://dev.mysql.com/doc/translation-refman/8.0/ja/introduction.html#mysql-nutshell
[12 Mar 2021 23:50] MySQL Verification Team
Thank you for the bug report.
[24 Apr 2021 15:47] Ryusuke Kajiyama
Posted by developer:
 
Fixed in MySQL 8.0 Reference Manual (Japanese) 
https://dev.mysql.com/doc/refman/8.0/ja/mysql-nutshell.html