Database 有没有一种方法可以优化像SQL查询这样的迭代器的Rust过滤器?

Database 有没有一种方法可以优化像SQL查询这样的迭代器的Rust过滤器?,database,optimization,rust,query-optimization,Database,Optimization,Rust,Query Optimization,我注意到Rust迭代器在某种程度上类似于SQL查询。由于我不熟悉SQL,也不熟悉它的优化(尽管我知道确实存在大量查询优化),Rust或任何其他语言有没有办法在编译时优化迭代式过滤器?比如说, struct城市{ 人口:u64, 名称:String, } fn重型计算标准(总体:u64)->bool{ 未执行!(); } fn main(){ 让城市=vec![…]; 让比赛=城市 .国际热核实验堆(iter) .filter(|城市|重计算|标准(城市.人口)) .filter(| city |

我注意到Rust迭代器在某种程度上类似于SQL查询。由于我不熟悉SQL,也不熟悉它的优化(尽管我知道确实存在大量查询优化),Rust或任何其他语言有没有办法在编译时优化迭代式过滤器?比如说,

struct城市{
人口:u64,
名称:String,
}
fn重型计算标准(总体:u64)->bool{
未执行!();
}
fn main(){
让城市=vec![…];
让比赛=城市
.国际热核实验堆(iter)
.filter(|城市|重计算|标准(城市.人口))
.filter(| city | city.population>1000)
.map(| city | city.name);
}
类似于

从人口>1000的城市和城市中选择名称。大量计算标准(城市。人口)

我想SQL首先会通过总体而不是繁重的计算标准进行过滤。rust中有这样一种优化方法吗?

我相信在某种程度上——是的。您可以想象迭代器结构有一个用于存储过滤器的字段,并且只在一个隔离点上-
map()
,在您的示例中-它计算过滤器

由于过滤器是锈迹斑斑的闭包,因此语言运行库在编译之前无法对其进行评估。但是它可以做一些启发式的工作,例如,根据我们的想法,在一个(少数)元素上评估每个存储的过滤器,以计算其成本。然后它可以将它们从低成本重新安排到高成本


请记住,我不知道这种方法是否能提高速度。

你是在问Rust是否能或能否重新订购这些过滤器?或者你是在问如何设计一个这样的系统?我是在问这两个问题,我应该澄清一下。我想知道rust是否能够/已经进行了这样的优化,如果不能,那么这样一个系统将如何在高级别上实现