- ベストアンサー
PHP上のSQLで、SELECT文をいくつも書くか、サブクエリやjoinを駆使して一つにまとめるか
PHP上でSQLの、複数のテーブルを呼び出すとき、 サブクエリやjoinを駆使して、一つのSELECT文でまとめて 複数のテーブルを呼び出す方法と SELECT文を何度も発行する方法とがありますが、 やはり一つにまとめたほうが理想的なんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
//メンバーテーブルからデータを取得 $hoge = mysql_query("SELECT name,age,city_code FROM member_table"); $i=0; while($piyo = mysql_fetch_row($hoge)){ $name[$i] = $piyo[0]; //名前を取得 $age[$i] = $piyo[1]; //年齢を取得 $city_code = $piyo[2]; //都市コードを取得 //都市コードから都市名を取得 $hogehoge = mysql_query("SELECT city_name FROM city_table WHERE city_code=".$city_code); $piyopiyo = mysql_fetch_row($hogehoge); $city_name[$i] = $piyopiyo[0]; $i++; } -------------------------------------------------------------------------------- これは極端な例ですが、レコード情報を取得しているループの中で、さらにクエリを 送信して情報を取得しています。 このようなケースでは、joinなりサブクエリなりを使用したほうが、パフォーマンスは 向上するかと思います。 個々のクエリに関しては、EXPLAINしてクエリの実行速度を計りながらコーディングして いくのがいいかと思います。 参考になりましたら幸いですが、参考にならない場合は読み飛ばしてくださいませ。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
>やはり一つにまとめたほうが理想的なんでしょうか? こればっかりは・・・ 意味があればまとめますし、意味がなければ別々に処理します。 ただ言えるのはSQLというものは往々にしてまとめるためのツールですから そういう利用方法を念頭においておいたほうがよいですね。
お礼
回答ありがとうございます。 ケースバイケースということですね。 参考になりました。
お礼
回答ありがとうございます。 ”10件表示”等の複数回処理の際に もう一度別のクエリを発行してリレーションさせたりすると パフォーマンスに影響がでることがあるということですね。 逆に言えば、一度程度の処理であれば、 パフォーマンスに影響はそんなにないということですね。 参考になりました。