SELECT
各ループを実行することなく、別のテーブルから行の情報を取得するにはどうすればよいですか?PHP別のテーブルから情報を取得
//get posts from "posts" table
$stmt = $dbh->prepare("SELECT * FROM posts WHERE user_id = :user_id");
$stmt->bindParam(':user_id', $userId);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $row) {
echo $row['post'];
//get poster's full name from "users" table
$stmt = $dbh->prepare("SELECT * FROM users WHERE user_id = :user_id");
$stmt->bindParam(':user_id', $row['poster_id']);
$stmt->execute();
$result2 = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($result2 as $row2) {
echo $row2['full_name'];
}
}
このコードをより効率的かつ高速にするにはどうすればよいですか?
私は1000の投稿があり、それぞれが別のユーザーによって投稿されたとします。投稿を投稿したユーザーのフルネームを取得する必要があります。今は1000人のユーザーのために、私はSELECT
に1000回する必要があります。今は非常に非効率なようです。どうすればいい?
私は参加する可能性があると聞きましたか?解決策は何ですか?
パフォーマンスについて質問しています。私はいつも、このような質問が現れたときにこの良い記事をリンクする必要性を感じます:http://ericlippert.com/2012/12/17/performance-rant/ あなたは解決する必要がある実際の問題はありますか?どこがボトルネックですか?このデータはどのくらい変わるでしょうか(キャッシュできますか)? – Christopher
@Christopher私は1000の投稿があり、それぞれが別のユーザーによって投稿されたと想像してください。投稿を投稿したユーザーのフルネームを取得する必要があります。今は、1000人のユーザーのために「選択」する必要があります。今は非常に非効率なようです。どうすればいい? – baileyJchoi
@MattiaDinosaurあなたは例を見せていただけますか? – baileyJchoi