[FIX] account_asset: Assets Analysis performance

In a real environment with a big dataset,
the query reponse time decreased from 750s to 6s,
by using a join on the sub-select instead of redoing
the select for each line.

Fixes #8812
Closes #9128
This commit is contained in:
Nicolas Seinlet 2015-10-19 11:43:44 +02:00 committed by Denis Ledoux
parent 5c9897a83f
commit 8c4877ff0d
1 changed files with 3 additions and 4 deletions

View File

@ -52,9 +52,7 @@ class asset_asset_report(osv.osv):
dl.name as name,
dl.depreciation_date as depreciation_date,
a.purchase_date as purchase_date,
(CASE WHEN (select min(d.id) from account_asset_depreciation_line as d
left join account_asset_asset as ac ON (ac.id=d.asset_id)
where a.id=ac.id) = min(dl.id)
(CASE WHEN dlmin.id = min(dl.id)
THEN a.purchase_value
ELSE 0
END) as gross_value,
@ -76,10 +74,11 @@ class asset_asset_report(osv.osv):
a.company_id as company_id
from account_asset_depreciation_line dl
left join account_asset_asset a on (dl.asset_id=a.id)
left join (select min(d.id) as id,ac.id as ac_id from account_asset_depreciation_line as d inner join account_asset_asset as ac ON (ac.id=d.asset_id) group by ac_id) as dlmin on dlmin.ac_id=a.id
group by
dl.amount,dl.asset_id,dl.depreciation_date,dl.name,
a.purchase_date, dl.move_check, a.state, a.category_id, a.partner_id, a.company_id,
a.purchase_value, a.id, a.salvage_value
a.purchase_value, a.id, a.salvage_value, dlmin.id
)""")