Mysql Activity Union Query

时间:2010-06-25 14:56:20

标签: mysql performance android-activity union

营业权。 我有一个活动源,它从我的网站的不同部分获取所有不同类型的活动,通过使用UNION和ORDER BY然后LIMIT获得前25个然后显示活动来对它们进行排序。

我的同事程序员说当我们有更多行时(目前我们有800行)我们会遇到问题而且没关系。

所以问题。 UNION会导致后来的线路减速吗? 如果是这样我们应该 a)尝试将活动放入新表中,然后查询。 b)尝试某种观点? - (如果有的话,任何人都可以解释我怎么不太确定如何!) c)其他......

感谢您的帮助。 理查德

4 个答案:

答案 0 :(得分:0)

这是一个棘手的问题,因为它取决于很多变量,例如表格的繁忙程度等等。

我认为union会让你慢下来,因为你使用的方法基本上是对整个表进行联合,所以这些需要在排序之前读入内存并限制数量行已应用。随着数据量的增加,您的查询变慢。

如果表中的所有数据都很重要,那么你可以尽力做到最好,并确保你尽可能地索引表,这样至少你的订单运行得很快等。如果表中的某些数据变旧或者过时并且您对它不太感兴趣,那么您可能有空间只读取临时​​表中所需的行。然后可以订购等等。

答案 1 :(得分:0)

为什么不将每个查询限制为25?这样,您可以限制在联合之前返回的行数,并限制为最终列表

答案 2 :(得分:0)

我认为最好的方法可能是组合2所以

a)是指数

b)然后对每个子查询执行LIMIT 25。

c)在每个查询上执行additional_date> =日期,以便我们拥有正确的日期顺序 嗯,但那会带来什么日期的问题。因此,如果我们转到第x页,我会得到哪些日期。

这变成了一个问题而且非常重要。我们拥有的数据量将非常大。

感谢您的帮助。 理查德

答案 3 :(得分:0)

决定只做一个日志然后这样做。 一如既往地感谢您的帮助。 理查德