我有下面的SQL查詢需要花費過多的時間來運行。索引已添加到每個表中的所有連接字段。對於每個表的記錄數如下:SQL查詢性能問題
CRM.ASSET_PLUS:15766000
CRM.EMPLOYEE:44,300
CRM.ACCOUNT:1,180,000
CRM.DATA_NOTIFICATIONS:500
CRM.PROD_INT:87,800
如何才能使此查詢更高效?
SELECT D.NAME AS UP_ACCOUNT_NAME,
B.FIRST_NAME,
B.LAST_NAME
FROM CRM.ASSET_PLUS A,
CRM.EMPLOYEE B,
CRM.ACCOUNT C,
CRM.ACCOUNT D,
CRM.DATA_NOTIFICATIONS E,
CRM.PROD_INT F
WHERE A.STATUS IN ('Active', 'Pending Install')
AND E.PROD_DEF_OLD = F.X_ITEM_NUMBER
AND F.ROW_ID = A.PRODUCT_ID
AND C.UP_ACCOUNT_ID = D.ACCOUNT_ID
AND C.ACCOUNT_ID = A.LOCATION_ACCOUNT_ID
AND D.MANAGER_ID = B.EMPLOYEE_ID
AND UPPER(D.NAME) LIKE '%BP%'
GROUP BY D.NAME,
B.FIRST_NAME,
B.LAST_NAME
什麼是您的RDBMS?假設你有適當的索引,除了隱式地加入你的'join'這個事實之外,我發現你的當前查詢沒有問題。你遇到什麼性能問題? –
如果是SQL Server,則向我們展示查詢計劃(實際優於預計)。 – RBarryYoung
這是一個Oracle數據庫。運行需要很長時間,大約需要5分鐘。 – StephenT