は私が仮想テーブルの数を結合するこのようなクエリ、持っていると言う:各JOINを、私の本当のクエリで仮想テーブルJOINはどのくらい効率的ではありませんか?
SELECT table1.a, tbl2.a, tbl3.b, tbl4.c, tbl5.a, tbl6.a
FROM table1
JOIN (SELECT x, a, b, c FROM table2 WHERE foo='bar') tbl2 ON table1.x = tbl2.x
JOIN (SELECT x, a, b, c FROM table3 WHERE foo='bar') tbl3 ON table1.x = tbl3.x
JOIN (SELECT x, a, b, c FROM table4 WHERE foo='bar') tbl4 ON table1.x = tbl2.x
JOIN (SELECT x, a, b, c FROM table5 WHERE foo='bar') tbl5 ON table1.x = tbl5.x
JOIN (SELECT x, a, b, c FROM table6 WHERE foo='bar') tbl6 ON table1.x = tbl6.x
WHERE anotherconstraint='value'
は集約関数、JOINを独自のを持っており、WHERE制約。
このようなクエリはどの程度うまくいかないでしょうか?さらに、これと個々の仮想テーブルのすべてを独自のクエリとして実行し、結果をSQLの外部でリンクすることとの間にどのような影響がありますか?
実際のテーブルJOINとは対照的に、あなたはどういう意味ですか?それをプロファイル!それは多くの要素に依存し、それらの多くはデータ/スキーマに依存します。また、SQLの外部で結果をリンクすると、非常に遅くなる可能性が非常に高いです。巨大なパフォーマンス上の問題がある場合は、すべてのテーブルでxまたはfooを超えるインデックスが必要な場合があります –
実際のクエリでは、JOINにはWHERE節の制約、追加の結合、および集計関数が多数あります。仮想テーブルとして。おそらくもっと良い方法がありますか? –
各サブクエリが複雑な場合は、実際にそれをプロファイルする必要があります。実行計画を見て、それらを読む方法を学んでください。 –