营业权。 我有一个活动源,它从我的网站的不同部分获取所有不同类型的活动,通过使用UNION和ORDER BY然后LIMIT获得前25个然后显示活动来对它们进行排序。
我的同事程序员说当我们有更多行时(目前我们有800行)我们会遇到问题而且没关系。
所以问题。 UNION会导致后来的线路减速吗? 如果是这样我们应该 a)尝试将活动放入新表中,然后查询。 b)尝试某种观点? - (如果有的话,任何人都可以解释我怎么不太确定如何!) c)其他......
感谢您的帮助。 理查德
答案 0 :(得分:0)
这是一个棘手的问题,因为它取决于很多变量,例如表格的繁忙程度等等。
我认为union
会让你慢下来,因为你使用的方法基本上是对整个表进行联合,所以这些需要在排序之前读入内存并限制数量行已应用。随着数据量的增加,您的查询将变慢。
如果表中的所有数据都很重要,那么你可以尽力做到最好,并确保你尽可能地索引表,这样至少你的订单运行得很快等。如果表中的某些数据变旧或者过时并且您对它不太感兴趣,那么您可能有空间只读取临时表中所需的行。然后可以订购等等。
答案 1 :(得分:0)
为什么不将每个查询限制为25?这样,您可以限制在联合之前返回的行数,并限制为最终列表
答案 2 :(得分:0)
我认为最好的方法可能是组合2所以
a)是指数
b)然后对每个子查询执行LIMIT 25。
c)在每个查询上执行additional_date> =日期,以便我们拥有正确的日期顺序 嗯,但那会带来什么日期的问题。因此,如果我们转到第x页,我会得到哪些日期。
这变成了一个问题而且非常重要。我们拥有的数据量将非常大。
感谢您的帮助。 理查德
答案 3 :(得分:0)
决定只做一个日志然后这样做。 一如既往地感谢您的帮助。 理查德