从多个类别获得有限(但不同)数量的文章的最快查询是什么?

时间:2013-03-05 20:01:50

标签: mysql performance

对于新闻门户的主页(由PHP和MySQL提供支持),我需要从一个类别获得9篇文章,从另一个类别获得9篇文章,从任何类别获得28篇最新文章。哪种方法最快?

我发现一些解决方案涉及在单个查询中从多个类别中获取指定数量的文章,但它们都为每个类别返回相同数量的文章,这不符合我的问题。而且他们也使用IF语句,我感觉速度不是最好的(?)

我应该只做3次查询吗?或者使用UNION ALL将它全部放在一个查询中?

2 个答案:

答案 0 :(得分:0)

我认为您无法在(非UNION或子选择)查询中实现您想要做的事情。

就多个查询与UNION或子选择而言,它取决于查询的速度。多个小查询可能会在查询/获取响应时产生重复的开销。在并发性和与其他查询很好地协作方面,在与其他查询竞争方面,更小的查询通常对数据库更好。

答案 1 :(得分:0)

当您使用unionunion all进行一次查询时,它会比三次单独查询更快,因为您可以节省通信费用。

另请考虑union而不是union all,因为union all会保留重复的行。