【发布时间】:2014-06-25 09:33:52
【问题描述】:
我已经改写了之前的问题MS Access 2010 SQL Top N query by group performance issue (continued),因为我认为之前没有清楚地描述上下文。我上一个问题的答案没有按组提供前 n 个结果。改写的问题更笼统。我现在将所有数据都放在一个表中。
这是我的情况:我有一个表(分析),其中包含各种类别(类别)的产品(零件编号)。每个产品都有一个价格(价值)。查询的目标是显示每个类别中价格最高的 10 个产品。该表包含 15000 条记录,并且会继续增长。
这是查询:
SELECT
a.Location,
a.Category,
a.Partnumber
a.Value
FROM Analysis a
WHERE a.Partnumber IN (
SELECT TOP 10 aa.Partnumber
FROM Analysis aa
WHERE aa.Category = a.Category
ORDER BY aa.Value DESC
)
ORDER BY
a.Category;
这是我的问题:我当前的查询使用表中的 1000 条记录(响应时间 3 秒)。对于 15000 条记录,查询会无限运行。如何重建查询以显着提高性能?
我上一个问题的答案是不使用列表内操作。但是这个消除了按组给出前 n 条记录的功能。查询给出了所有记录的前 n 个。
【问题讨论】:
-
您可以尝试使用排名查询,如图所示here
标签: sql performance ms-access-2010 query-performance