应该在视图中为日期减法创建哪些索引?

时间:2015-06-26 21:49:24

标签: sql postgresql indexing

我有一个带有计算列(my_view)的视图(days_since_my_date),它可以获得今天和日期列之间的差异(以天为单位)my_date来自my_table }):

CREATE VIEW my_view AS 
SELECT 'now'::text::date - my_date AS days_since_my_date,
...
FROM my_table;

我需要在视图的计算列(days_since_my_date)上优化大于/小于日期查询的索引(如果有)?我假设他们需要应用于my_date中的my_table列。查询非常简单,类似于以下内容:

SELECT * 
FROM my_view 
WHERE days_since_my_date >= 10;

针对my_date创建的标准索引(如下所示)在上述查询中不会受到影响:

CREATE INDEX my_date_idx on my_table(my_date);

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

您无法索引表达式,因为它取决于非确定性函数。

您应该将索引列与常量(从运行时开始)进行比较,而不是比较构造的列:

macro_rules! add_impl {
    ($($t:ty)*) => ($(
        #[stable(feature = "rust1", since = "1.0.0")]
        impl Add for $t {
            type Output = $t;

            #[inline]
            fn add(self, other: $t) -> $t { self + other }
        }

        forward_ref_binop! { impl Add, add for $t, $t }
    )*)
}