2014-01-09 122 views
1

我有一個mysql查詢使用存儲的函數來爲報表做一些沉重的數學運算。我需要在同一個查詢中使用存儲的函數,比如4或5次。但是函數需要迭代中的數據,所以我不能將它設置爲一個變量。如何緩存mysql存儲的函數

如果參數相同,有什麼方法可以讓您知道緩存函數嗎?我們可以自己構建它,檢查參數和緩存表,如果它們相同,則立即返回。但我想知道如果MySQL有這種內置的。使用MariaDB的10

這裏是函數的例子調用

dailySales2(sku.sku) as daily, 
countOrders(sku.sku,90) as sold90, 
ROUND(getStock(sku.sku)/dailySales2(sku.sku)) as daysOfStock, 
getStock(sku.sku) as stock, 
ROUND(GREATEST(1,qb.moq,(dailySales2(sku.sku) * (ROP + 5)) - (getStock(sku.sku)))) as toOrder, 

謝謝!

回答

0

你試過嵌套查詢嗎?

之前:

SELECT sproc(col), ROUND(sproc(col)) FROM tbl 

後:

SELECT result, ROUND(result) FROM 
(SELECT sproc(col) FROM tbl) AS nested 
+0

潛在我可以使用一個內部查詢來設置一堆@variables,然後將外部查詢做的邏輯。不知道這是否會奏效,但這是需要考慮的。 –