我想多次使用子查詢(它會接受不同的輸入)並與父查詢連接。問題是,查詢需要幾分鐘的時間來執行。什麼是優化以下查詢。多次加入同一個表
SELECT A.PROJECT_ID,A.PROJECT_BASIC_INFORMATION_ID,B.VALUE AS BU_START_DATE,C.VALUE AS BU_DURATION,D.VALUE AS BU_AMOUNT,E.VALUE AS PLUG FROM
PROJECT_BASIC_INFORMATION A,
CUSTOM_ATTRIBUTES_VALUES B,
CUSTOM_ATTRIBUTES_VALUES C,
CUSTOM_ATTRIBUTES_VALUES D,
CUSTOM_ATTRIBUTES_VALUES E
WHERE
A.TENANT_ID = '100' AND
B.MAP_ID = (SELECT MST_ATTRIBUTE_ID FROM `MST_TENANT_CUSTOM_ATTRIBUTES`
WHERE LABEL='Budget Project Savings Start Date' AND
TENANT_ID='100') AND
C.MAP_ID = (SELECT MST_ATTRIBUTE_ID FROM `MST_TENANT_CUSTOM_ATTRIBUTES`
WHERE LABEL='Budget Savings Duration' AND
TENANT_ID='100') AND
D.MAP_ID = (SELECT MST_ATTRIBUTE_ID FROM `MST_TENANT_CUSTOM_ATTRIBUTES`
WHERE LABEL='Budget Annualized Savings' AND
TENANT_ID='100') AND
E.MAP_ID = (SELECT MST_ATTRIBUTE_ID FROM `MST_TENANT_CUSTOM_ATTRIBUTES`
WHERE LABEL='Plug' AND
TENANT_ID='100')
GROUP BY A.PROJECT_BASIC_INFORMATION_ID ORDER BY A.PROJECT_ID
謝謝。
檢查執行計劃 - 確保TENANT_ID字段建立索引 – Randy
考慮提供適當的DDL(和/或sqlfiddle)連同所需的結果集。 – Strawberry
嘗試在查詢中加入'EXPLAIN'並在數據庫管理軟件中分析結果 – Ejaz