查询效率 - 从表

时间:2015-05-20 07:41:52

标签: mysql performance query-optimization query-performance full-table-scan

我们测试了一个非常有趣的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,保存该查询的结果,然后(b)在SQL中运行这些保存结果的工作查询?

或者可能有一种完全不同的方法,它有很好的表现?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我在Groupwise-Max blog

中提供了一个通用的O(N)解决方案