Как кэшировать хранимые функции mysql

У меня есть запрос mysql, который использует хранимые функции для выполнения сложной математики для отчетов. Мне нужно использовать эту сохраненную функцию, например, 4 или 5 раз в одном запросе. Но функции нужны данные от итерации, поэтому я не могу установить ее как переменную.

Есть ли какой-нибудь известный вам способ кэшировать функцию, если параметры совпадают? Мы могли бы встроить это в себя, проверить параметры и таблицу кеша, и если они совпадают, просто сразу вернуться. Но мне интересно, встроено ли это в 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,

Спасибо!


person Sean Clark    schedule 09.01.2014    source источник


Ответы (1)


Вы пробовали вложенный запрос?

До:

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

После:

SELECT result, ROUND(result) FROM
(SELECT sproc(col) FROM tbl) AS nested
person univerio    schedule 09.01.2014
comment
потенциально я мог бы использовать внутренний запрос, чтобы установить кучу @variables, а затем внешний запрос, чтобы выполнить логику. Не уверен, что это сработает, но есть над чем подумать. - person Sean Clark; 09.01.2014