Je souhaite utiliser une sous-requête (qui prend différentes entrées) plusieurs fois et rejoindre la requête parent. Le problème est que la requête prend plusieurs minutes à s'exécuter. Quelle est la meilleure façon d'optimiser le requête suivante.Rejoindre la même table plusieurs fois
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
Merci.
vérifier le plan d'exécution - assurez-vous que le champ TENANT_ID est indexé – Randy
fournissant DDLs appropriés Tenir compte (et/ou un sqlfiddle) ENSEMBLE AVEC LE RESULTAT SOUHAITE SET. – Strawberry
essayez d'ajouter 'EXPLAIN' à la requête et analysez les résultats dans votre logiciel de gestion de base de données – Ejaz