0

我们测试了一个非常有趣的 SQL 查询。不幸的是,事实证明这个查询运行有点慢 - O(n2) - 我们正在寻找一个优化的解决方案,或者可能也是一个完全不同的解决方案?

目标:

We would like to get for:
 - some customers ("record_customer_id"), e.g. ID 5
     - the latest 2 "record_init_proc_id" 
       - for every "record_inventory_id"

http://www.sqlfiddle.com/#!9/07e5d/4

该查询工作正常并显示正确的结果,但至少使用两次全表扫描,这在有太多行要扫描时当然很糟糕。

是否可以(a)首先选择特定日期范围内的所有record_customer_id(s),保存该查询的结果,然后(b)在SQL fiddle中运行工作查询来处理这些保存的结果?

或者是否有一种完全不同的方法可以实现出色的性能?

任何帮助是极大的赞赏!

4

1 回答 1

0

我在我的Groupwise-Max 博客中给出了一个通用的 O(N) 解决方案

于 2015-06-04T23:31:40.003 回答