用于创建“临时”可排序db表/ redis值的解决方案

时间:2014-01-20 16:33:09

标签: php mysql sorting dataset filtering

我有一种情况,我正在拉动一个需要在php端进行后处理的大数据集进行排序和过滤(不能全部在sql中完成)。当用户实际开始排序或过滤数据时,这会非常慢,因为我们需要在每个后续请求中运行我们讨厌的sql和后处理逻辑。为了论证,我们只是说sql和post处理是100%需要的。我正在考虑做的是使用第一次运行的数据创建一个“临时表”(或类似的东西),然后查询所有连续排序/过滤器的临时表。我想知道人们的想法可能与这种情况有关。我认为严格的mysql临时表不会起作用,因为在删除连接并且我们没有使用持久连接时会删除这些表。我查看了redis,但看起来我不能对一组对象进行排序/过滤的类型(在特定键上排序关联数组,可能是数字,字符串等等)。有没有人对这类情景的潜在解决方案有任何建议?

我正在使用mysql,php,galera cluster

1 个答案:

答案 0 :(得分:0)

只需CREATE TABLE使用“临时”名称,而非字面CREATE TEMPORARY TABLE

如果您将它们命名为__tmp_x,那么它们应该是显而易见的,并且以后很容易将它们清理干净。

您所描述的内容听起来像是data warehouse的用例。有意复制的数据库副本,您可以在不影响生产的情况下尽可能积极地捶打。您可以根据需要从那里导出。