我有一个带有计算列(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);
非常感谢任何帮助。
答案 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 }
)*)
}