【发布时间】:2018-08-10 16:45:36
【问题描述】:
我正在处理 oracle 11 上的怪物查询(约 800 行),它占用了昂贵的资源。
这里的主要问题是一个表 mouvement 大约有 1800 万行,我在这个表上有 30 个左连接。
LEFT JOIN mouvement mracct_ad1
ON mracct_ad1.code_portefeuille = t.code_portefeuille
AND mracct_ad1.statut_ligne = 'PROPRE'
AND substr(mracct_ad1.code_valeur,1,4) = 'MRAC'
AND mracct_ad1.code_transaction = t.code_transaction
LEFT JOIN mouvement mracct_zias
ON mracct_zias.code_portefeuille = t.code_portefeuille
AND mracct_zias.statut_ligne = 'PROPRE'
AND substr(mracct_zias.code_valeur,1,4) = 'PRAC'
AND mracct_zias.code_transaction = t.code_transaction
LEFT JOIN mouvement mracct_zixs
ON mracct_zias.code_portefeuille = t.code_portefeuille
AND mracct_zias.statut_ligne = 'XROPRE'
AND substr(mracct_zias.code_valeur,1,4) = 'MRAT'
AND mracct_zias.code_transaction = t.code_transaction
有什么方法可以让我摆脱左连接(联合连接或示例)以使查询更快并减少消耗?执行计划什么的?
【问题讨论】:
-
这几行代码做的事情完全一样。
-
请解释这两个连接之间除了移动表的别名之外还有什么不同。
-
对不起,我更新了代码。
标签: sql oracle query-optimization sql-tuning