*作为第一个说明,我只有对我的服务器的读取权限。只是,仅供参考,因为它似乎出现了很多......
服务器:DB2(6.1) for i (IBM)
我有一个查询,我在一个有 1900 万行的表上运行(我不设计它们,我只是查询它们)。我一直将我的返回数据限制为 10 行 (*),直到我整理出这个查询,以便返回时间更合理一些。
基本设计是我需要获取有关我们每周销售的产品类别的数据,使用列:WEEK_ID 和 CATEGORY。这是示例代码(带有一些重要的位####。)
SELECT WEEK_ID, CATEGORY
FROM DWQ####.SLSCATW
INNER JOIN DW####.CATEGORY
ON DWQ####.SLSCATW.CATEGORY_NUMBER = DW####.CATEGORY.CATEGORY_NUMBER
WHERE WEEK_ID
BETWEEN 200952 AND 201230 --Format is year/week
GROUP BY WEEK_ID, CATEGORY
如果我注释掉最后一行,我可以在 254 毫秒内取回 100 行。如果我把这条线放回我的回报中需要的时间比我有耐心等待的时间要长:-)。(我等的最长的时间是 10 分钟。)
这个问题有两个部分。第一个问题很初级:这正常吗?我试图浓缩到 50 个类别(大约)和 140 周(左右)。我意识到要从 1900 万行中压缩很多信息,但我希望将查询限制为返回的 10 行可以最大限度地减少时间?
而且,如果我不只是一个完整的 n00b,而且这实际上不需要几分钟,那么我的 SQL 到底有什么问题?
我用谷歌搜索了 WHERE 语句优化,似乎找不到任何东西。非常欢迎所有链接和解释。
为这样一个新手帖子道歉......我们都必须从某个地方开始,对吧?
(*)使用 SQLExplorer,我的 IDE,Squirrel SQL 的 Eclipse 实现。