2010-02-22 268 views
2

在我的申請,我的模塊使用下表查詢優化

  1. PUBLIC_APPLICATION
  2. CATEGORY_MASTER
  3. NOTIFICATION_SITE_DETAIL
  4. DIMENSION_MASTER DM
  5. PUBLIC_REGISTRATION
  6. ALLOTMENT_NOTIFICATION。

從下面的表格,我檢索數據

SELECT PA.REGISTRATION_NO,PA.APP_ID,PA.NO_OF_ATTEMPTS,CM.CATEGORY_NAME, 
DM.SITE_DIMENSION,PR.BDA_NO,AN.NOTIFY_ID 
FROM **PUBLIC_APPLICATION PA,CATEGORY_MASTER CM,NOTIFICATION_SITE_DETAIL NSD,DIMENSION_MASTER DM, PUBLIC_REGISTRATION PR,ALLOTMENT_NOTIFICATION AN** 
WHERE **CM.CATEGORY_ID = PA.CATEGORY_ID AND 
NSD.NOTIFY_SITE_ID = PR.NOTIFY_SITE_ID AND 
DM.DIMENSION_ID = NSD.DIMENSION_ID AND 
PR.REGISTRATION_NO = PA.REGISTRATION_NO AND 
AN.NOTIFICATION_NO = PA.NOTIFICATION_NO AND 
PR.NOTIFY_SITE_ID = PA.NOTIFY_SITE_ID AND NSD.NOTIFY_ID = AN.NOTIFY_ID AND 
PA.NOTIFICATION_NO = ?** LIMIT ?, ? 

PUBLIC_APPLICATION & PUBLIC_REGISTRATION有大量的數據,近1百的記錄和其他表有大約5000條記錄。

如果我執行上述查詢需要超過30分鐘才能得到結果,任何人都可以建議我寫出高效的查詢以在最短時間內得到結果。

忘了指定,我正在使用mysql數據庫。

+0

那麼,查詢是否適合您? – DRapp 2010-02-23 00:45:54

+0

工作效率很高,時間從30分鐘減少到1分鐘。非常感謝 – gmhk 2010-02-23 07:30:16

回答

4

通過使用「STRAIGHT_JOIN」,您可以告訴優化器按照您的說法進行操作。 我將通知#作爲第一個WHERE子句移動,因此首先處理它以限制您的設置。那麼,我將連接設置到其他表中。在此之前,我查詢了超過1500萬條記錄的數據,並加入了15個以上的表格,耗時20多個小時。通過在我已經格式良好的查詢中添加「STRAIGHT_JOIN」,它花費了大約2個小時......再次獲得了超過1,500萬條記錄,並加入了超過15張表格以獲取兒童描述性細節。

SELECT STRAIGHT_JOIN 
     PA.REGISTRATION_NO, 
     PA.APP_ID, 
     PA.NO_OF_ATTEMPTS, 
     CM.CATEGORY_NAME, 
     DM.SITE_DIMENSION, 
     PR.BDA_NO, 
     AN.NOTIFY_ID 
    FROM 
     PUBLIC_APPLICATION PA, 
     CATEGORY_MASTER CM, 
     NOTIFICATION_SITE_DETAIL NSD, 
     DIMENSION_MASTER DM, 
     PUBLIC_REGISTRATION PR, 
     ALLOTMENT_NOTIFICATION AN 
    WHERE 
      PA.NOTIFICATION_NO = ? 
     AND PA.CATEGORY_ID = CM.CATEGORY_ID 
     AND PA.REGISTRATION_NO = PR.REGISTRATION_NO 
     AND PA.NOTIFICATION_NO = AN.NOTIFICATION_NO 
     AND PA.NOTIFY_SITE_ID = PR.NOTIFY_SITE_ID 
     AND PR.NOTIFY_SITE_ID = NSD.NOTIFY_SITE_ID 
     AND NSD.DIMENSION_ID = DM.DIMENSION_ID 
     AND NSD.NOTIFY_ID = AN.NOTIFY_ID 
    LIMIT 
     ?, ? 
+1

鐵桿...輝煌! ;) – pixeline 2010-02-22 17:27:29

+0

讓我試試這個,謝謝你的建議 – gmhk 2010-02-22 17:28:42

+0

它工作的很好,時間從30分鐘減少到1分鐘。非常感謝 – gmhk 2010-02-23 07:30:01