ユーザーの実際のクエリ時間は約0.6秒です
説明付きで見る:
実際の時間は約0.03秒です
説明ビュー
これら 2 つのクエリ方法の効率にこれほど大きな違いがあるのはなぜですか?
インターネット上の多くの人は、これら 2 つの書き込み方法の効率はほぼ同じであると言っていますが、私の場合は 0.6 で、もう 1 つは 0.03 で、その差はあります。この 2 つの差はかなり大きいのでしょうか?これは、私が作成した SQL ステートメントに問題があるためでしょうか、それとも他の理由でしょうか?
説明付きで見る:
説明ビュー
インターネット上の多くの人は、これら 2 つの書き込み方法の効率はほぼ同じであると言っていますが、私の場合は 0.6 で、もう 1 つは 0.03 で、その差はあります。この 2 つの差はかなり大きいのでしょうか?これは、私が作成した SQL ステートメントに問題があるためでしょうか、それとも他の理由でしょうか?
お試しいただけます
リーリー
パフォーマンスは大きく変わると思います。
同様に、SQL-89 と SQL-92 の異なる仕様に属します。 https://en.wikipedia.org/wiki を参照してください...
関連する質問と回答を見つけました。回答の 1 つはまさにあなたの質問です https://community.microstrate...
ここでの 2 番目の SQL には、サブクエリにより余分なオーバーヘッド (一時テーブル) が発生します。
なぜ 2 番目の SQL が最初の SQL よりも優れているのでしょうか? 実行計画からは何も見えず、単なる例外のように感じられます。
理論的には、
のサブクエリとシナリオは次のとおりです:
これは、典型的な MySQL クエリ アナライザーの障害シナリオです。
の結果に基づいて結論を導き出します。 JOIN
没有本质区别,在查询分析器合理的优化之后应该是等效的。但是也正是由于查询分析器的各种缺陷,有些时候有些版本的数据库对子查询支持得更好,有些则对JOIN
支持得更好。MySQL来说我见过的大部分版本子查询和JOIN
是等效的,但是要小心的是子查询位于WHERE
2 つのクエリでは、実際には実行プランが異なります。追加の 2 つのステップで取得されるデータの量はそれほど多くないため、2 番目のクエリの方がより多くの時間を費やしていることは明らかです。さらに、これら 2 つのクエリは実際には同等ではないため、比較できません。