*作爲第一個注意事項,我只能讀取我的服務器。只是,僅供參考,因爲它似乎來了很多......組通過使查詢天文學更長
服務器:DB2(6.1),其中i(IBM)
我有一個查詢,我就在它有19mil行的表運行(我不設計它們,我只是查詢它們)。我一直限制我的返回數據爲10行(*),直到我得到這個查詢整理出來,以便返回時間有點合理。
的基本設計是,我需要得到的數據有關的按周基礎上,我們在一個星期賣的產品類別,使用列:WEEK_ID,和類別。這裏的示例代碼(有一些重要的位####出)。
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 2--Format is year/week
GROUP BY WEEK_ID, CATEGORY
如果我註釋掉最後一行,我可以在254毫秒拿回100行。如果我把這條線放回我的迴歸時間比我耐心等待的時間要長:-)。 (最長我等了10分鐘。)
這個問題有兩個部分。第一個問題很簡單:這是正常的嗎?有50個類別(粗略)和140個星期(左右),我試圖壓縮。我意識到這是很多信息來冷凝19mil行,但我希望限制我的查詢10行返回將最小化時間?
而且,如果我不只是一個完整的n00b,這其實不應該需要幾分鐘的時間,究竟是什麼毛病我的SQL?
我谷歌搜索WHERE語句優化,似乎無法找到任何東西。所有的鏈接和解釋都是值得歡迎的。
道歉這樣的新手帖子...我們都必須從某個地方開始,對吧?
(*)使用SQLExplorer視窗,我的IDE,一個Eclipse實現松鼠的SQL。
爲什麼'group by'?我看不到聚合..? –
你是否真的在尋找'distinct',有任何機會? –
好問題。對於每個日期/類別組合,都有幾千個不同的條目(至少當你考慮表中的所有信息時)。但是對於我拉回來的數據,我並不關心那些不同的列,試圖摺疊行。我應該使用Select Distinct嗎?既然我不拉回不同的行? –