数据库调用获取无限条目(可以是10或10.000),如下所示:
SELECT * FROM boo WHERE id = %d AND (approved = '1' OR (user = %d AND approved = '0'))
2个数据库调用,一个获取10个条目,另一个获取一个条目:
SELECT * FROM boo WHERE id = %d AND approved = '1' LIMIT 10
SELECT * FROM boo WHERE user = %d AND approved = '0'
请注意,我无法创建自己的数据库查询。我只能使用一组执行上述查询的函数...
哪个选项更有效/更快?
答案 0 :(得分:2)
这很难回答,但这是一个要考虑获得更好性能的大纲:
您尚未提及要编制索引的列(如果有)。索引要选择的列以及您使用条件的列可以帮助您获得更好的性能。请记住,索引将导致更高的写入成本等。如果这些列的常见情况是查找,我会说要进行索引。
确保选择实际需要的列,而不是选择全部。这是另一个可以让你获得更好表现的因素。
请记住:每个查询都有自己的开销。添加更多查询会产生更多费用。
请记住:您需要确切了解平均性能。例如,我看到您的一个查询依赖于某个用户。问问自己,这些用户是谁,他们只是随机网站用户,会有几个与他们相关的记录?或者这些用户是一个紧张的社区,持续发布并有很多与他们相关的评论?这些问题将帮助您确定和估算返回结果的数量(平均值),并且应该用于确定应该采用哪种方式。
希望有所帮助!
答案 1 :(得分:1)
试试看?
假设这些表位于具有适当索引的大表中,这可能是最快的:
SELECT * FROM boo WHERE id = %d AND approved = '1' LIMIT 10
UNION ALL
SELECT * FROM boo WHERE user = %d AND approved = '0'
答案 2 :(得分:1)
测试自己。使用EXPLAIN,您可以了解正在发生的事情