アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHP上でSQLの、複数のテーブルを呼び出すとき、
サブクエリやjoinを駆使して、一つのSELECT文でまとめて
複数のテーブルを呼び出す方法と
SELECT文を何度も発行する方法とがありますが、
やはり一つにまとめたほうが理想的なんでしょうか?

A 回答 (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してクエリの実行速度を計りながらコーディングして
いくのがいいかと思います。

参考になりましたら幸いですが、参考にならない場合は読み飛ばしてくださいませ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
”10件表示”等の複数回処理の際に
もう一度別のクエリを発行してリレーションさせたりすると
パフォーマンスに影響がでることがあるということですね。
逆に言えば、一度程度の処理であれば、
パフォーマンスに影響はそんなにないということですね。
参考になりました。

お礼日時:2007/10/18 14:06

>やはり一つにまとめたほうが理想的なんでしょうか?



こればっかりは・・・
意味があればまとめますし、意味がなければ別々に処理します。
ただ言えるのはSQLというものは往々にしてまとめるためのツールですから
そういう利用方法を念頭においておいたほうがよいですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ケースバイケースということですね。
参考になりました。

お礼日時:2007/10/18 14:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す