Mongus Pong からの質問を繰り返してい ます。一時テーブルを使用すると、入れ子になったクエリよりも高速になるのはなぜですか? 私にとって有効な答えはありません。
私たちのほとんどは、ある時点で、ネストされたクエリが特定の複雑さに達すると、パフォーマンスを維持するために一時テーブルに分割する必要があることに気付きます。これがこれまでで最も実用的な方法であり、これらのプロセスをビューにすることができなくなったことを意味するのはばかげています。多くの場合、サードパーティの BI アプリはビューでのみうまく機能するため、これは非常に重要です。
エンジンが各サブクエリを順番にスプールし、裏返しに作業するようにするための単純なクエリプラン設定が必要であると私は確信しています。サブクエリをより選択的にする方法を推測する必要はなく (非常にうまくいく場合もあります)、相関サブクエリの可能性もありません。プログラマーが括弧内の自己完結型コードによって返されることを意図したデータのスタック。
単純にサブクエリから #table に変更するだけで 120 秒から 5 秒かかることがよくあります。基本的に、オプティマイザはどこかで大きな間違いを犯しています。確かに、オプティマイザーがテーブルを正しい順序で参照できるようにするには、非常に時間のかかる方法があるかもしれませんが、それでも保証はありません。ここで理想的な 2 秒の実行時間を求めているのではなく、ビューの柔軟性の範囲内で一時テーブルが提供する速度を求めているだけです。
私はこれまでここに投稿したことはありませんでしたが、私は何年も SQL を書いており、この問題を受け入れるようになったばかりの他の経験豊富な人々のコメントを読みました。特別なヒントは X...