我有一个像下面两个表:JOIN VS多个查询时,有LIMIT 5
// posts
+----+---------+------------------+-----------+
| id | title | content | author_id |
+----+---------+------------------+-----------+
| 1 | title1 | content1 | 123 |
| 2 | title2 | content2 | 456 |
| . | . | . | . |
| . | . | . | . |
| . | . | . | . |
+----+---------+------------------+-----------+
// users
+----+-------+
| id | name |
+----+-------+
| 1 | Jack |
| 2 | Peter |
| . | . |
| . | . |
| . | . |
+----+-------+
我想选择5个帖子象下面这样:
SELECT * FROM posts WHERE 1 ORDER BY id LIMIT 5
我还需要得到的名称作者每个帖子。所以,我可以做到这一点通过使用JOIN
这样的:
SELECT p.*, u.name
FROM posts p
JOIN users ON p.author_id = u.id
WHERE 1
ORDER BY id
LIMIT 5
我是这样做的另一种方式:
SELECT * FROM posts WHERE 1 ORDER BY id LIMIT 5
// storing results in a PHP array named $results
foreach($results as $result) {
SELECT name FROM users WHERE id = $result['author_id']
// storing results in a PHP array named $names
}
// combining $names and $results to make expecting result
那么,哪种方法是巨大的数据集更有效率?换句话说,JOIN
发生在LIMIT
之前吗?如果是的话,那么我想这样做的PHP会更快,我错了吗?
啊,我明白了,thx +1 – stack
@stack感谢+1,但请记住,如果答案已妥善回答您的问题,您可以接受答案。 :) –