我在PostgreSQL中有一个items
表,其中有4列:start_price,end_price,start_date,duration。
我想支持查询以返回由current_price排序的商品,该价格由配方商如下计算
current_price = start_price + (end_price - start_price) * (current_time - start_date) / duration
如何设计此类表和current_price
列,使其具有可伸缩性和高性能以支持数百万行?
答案 0 :(得分:1)
您可以通过定义CTE来实现。
例如:
WITH c AS (
SELECT
start_price,
end_price,
start_date,
duration,
start_price
+ (end_price - start_price) * (current_time - start_date)
/ duration AS current_price
FROM items
)
SELECT
start_price,
end_price,
start_date,
duration,
current_price
FROM c
ORDER BY current_price DESC;
您可以将此查询包装到函数或视图中。
希望有帮助。