如何從另一個表格獲取一行信息,而無需每個循環都有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個帖子,並且每個帖子都是由其他用戶發佈的。我需要獲取發佈帖子的用戶的全名。現在,我需要SELECT
1000次,因爲那1000個用戶。現在看起來效率很低。我怎樣才能讓它變得更好?
我聽說加入可能有效嗎?有什麼解決方案?
您在詢問Performance。當這樣一個問題出現時,我總是覺得有必要鏈接這個好文章:http://ericlippert.com/2012/12/17/performance-rant/ 那麼是否存在需要解決的實際問題?瓶頸究竟在哪裏?這個數據有多大可能會改變(你能緩存它)嗎? – Christopher
@Christopher想象一下,如果我有1000個帖子,並且每個帖子都是由其他用戶發佈的。我需要獲取發佈帖子的用戶的全名。現在,我需要爲這1000個用戶「選擇」1000次。現在看起來效率很低。我怎樣才能讓它變得更好? – baileyJchoi
@MattiaDinosaur你能舉個例子嗎? – baileyJchoi