Try to speed up calculate script + fixes
This commit is contained in:
@@ -107,22 +107,32 @@ async function calculateMetrics() {
|
||||
// Get counts of records that need updating based on last calculation time
|
||||
const [[productCount], [orderCount], [poCount]] = await Promise.all([
|
||||
connection.query(`
|
||||
SELECT COUNT(*) as total
|
||||
SELECT COUNT(DISTINCT p.pid) as total
|
||||
FROM products p
|
||||
LEFT JOIN calculate_status cs ON cs.module_name = 'product_metrics'
|
||||
FORCE INDEX (PRIMARY)
|
||||
LEFT JOIN calculate_status cs ON cs.module_name = 'product_metrics'
|
||||
LEFT JOIN orders o FORCE INDEX (idx_orders_metrics) ON p.pid = o.pid
|
||||
AND o.updated > COALESCE(cs.last_calculation_timestamp, '1970-01-01')
|
||||
AND o.canceled = false
|
||||
LEFT JOIN purchase_orders po FORCE INDEX (idx_purchase_orders_metrics) ON p.pid = po.pid
|
||||
AND po.updated > COALESCE(cs.last_calculation_timestamp, '1970-01-01')
|
||||
WHERE p.updated > COALESCE(cs.last_calculation_timestamp, '1970-01-01')
|
||||
OR o.pid IS NOT NULL
|
||||
OR po.pid IS NOT NULL
|
||||
`),
|
||||
connection.query(`
|
||||
SELECT COUNT(*) as total
|
||||
SELECT COUNT(DISTINCT o.id) as total
|
||||
FROM orders o
|
||||
LEFT JOIN calculate_status cs ON cs.module_name = 'product_metrics'
|
||||
FORCE INDEX (idx_orders_metrics)
|
||||
LEFT JOIN calculate_status cs ON cs.module_name = 'product_metrics'
|
||||
WHERE o.updated > COALESCE(cs.last_calculation_timestamp, '1970-01-01')
|
||||
AND o.canceled = false
|
||||
AND o.canceled = false
|
||||
`),
|
||||
connection.query(`
|
||||
SELECT COUNT(*) as total
|
||||
SELECT COUNT(DISTINCT po.id) as total
|
||||
FROM purchase_orders po
|
||||
LEFT JOIN calculate_status cs ON cs.module_name = 'product_metrics'
|
||||
FORCE INDEX (idx_purchase_orders_metrics)
|
||||
LEFT JOIN calculate_status cs ON cs.module_name = 'product_metrics'
|
||||
WHERE po.updated > COALESCE(cs.last_calculation_timestamp, '1970-01-01')
|
||||
`)
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user