2014-03-26 32 views
0

我一直在服用在線課程的關係數據庫和創建的Access數據庫(首次),以練習我的SQL查詢和解決幾個沿途與工作相關的問題。該數據庫由三個表組成,其中主表用於在分行/商店/菜單項級別(例如最低級別的詳細級別)上記錄公司範圍的銷售彙總信息,並且具有三個數據庫週期的數據一張表包含4,262,421條記錄。無效查詢還是達到訪問限制?

一切順利,直到我試圖運行下面的查詢:

SELECT P1.*, P13.[Price?] AS P13Price 
FROM (SELECT * FROM PBASE WHERE Period = 13) AS P13, (SELECT * FROM PBASE WHERE Period = 1) AS P1 
WHERE P1.Key = P13.Key and P1.[Price?]<>P13.[Price?]; 

講解,大表PriceAccData,所以我第一個跑了添加一個字段到PriceAccData查詢(PBASE),其我可以用它作爲比較一個時期到下一個時期(分支,商店,菜單項的組合)的價格變化的關鍵。然後,我使用子查詢創建了2013年(第13期)和2014年第一期(第一期)的數據集......從那裏我嘗試確定價格從一個時期到接下來在Where子句中。

是否有寫查詢或完成比較....它將在一次對一個分支上工作更有效的方式,但是需要很長的時間,鎖定了訪問,如果我運行一個以上的科。

回答

1

子查詢總是知道是低效和作爲最後的手段。通常有一種方法可以加入表格以提高效率。我建議如下行:

SELECT ...... FROM PBASE P13 INNER JOIN PBASE P1 ON P13.KEY=P1.KEY 

這會給你2個週期的數據,然後你可以檢查你的平等標準。讓我知道如果你需要進一步的幫助,瞭解

+0

謝謝你的小費唐,一點也更加及時返回結果....但我現在遇到的問題是,經過查詢已運行和結果在屏幕上,我每隔幾秒就會看到旋轉的藍色圓圈,它會在旋轉時鎖定Access。任何想法爲什麼會發生或如何阻止它?看到查詢已完成並在屏幕上顯示我的結果,但無法使用它們,這是非常令人沮喪的。 – Hurst2008

+0

正在返回多少條記錄? –

+0

通常,您不會只選擇所有需要的行(尤其是如果它太多)來顯示,因爲這會耗盡RAM(內存)。所以,如果行數真的很多,我懷疑這就是旋轉的藍色圓圈。您可以嘗試查看您的CPU和RAM利用率從任務管理器進行訪問,當這種情況發生 –