MySQL数据库查询 - 速度

时间:2010-11-28 07:27:56

标签: php mysql database

  • 数据库调用获取无限条目(可以是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'

请注意,我无法创建自己的数据库查询。我只能使用一组执行上述查询的函数...

哪个选项更有效/更快?

3 个答案:

答案 0 :(得分:2)

这很难回答,但这是一个要考虑获得更好性能的大纲:

  1. 您尚未提及要编制索引的列(如果有)。索引要选择的列以及您使用条件的列可以帮助您获得更好的性能。请记住,索引将导致更高的写入成本等。如果这些列的常见情况是查找,我会说要进行索引。

  2. 确保选择实际需要的列,而不是选择全部。这是另一个可以让你获得更好表现的因素。

  3. 请记住:每个查询都有自己的开销。添加更多查询会产生更多费用。

  4. 请记住:您需要确切了解平均性能。例如,我看到您的一个查询依赖于某个用户。问问自己,这些用户是谁,他们只是随机网站用户,会有几个与他们相关的记录?或者这些用户是一个紧张的社区,持续发布并有很多与他们相关的评论?这些问题将帮助您确定和估算返回结果的数量(平均值),并且应该用于确定应该采用哪种方式。

  5. 希望有所帮助!

答案 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,您可以了解正在发生的事情