优化
如果您使用 Polars 的延迟 API,Polars 将对您的查询运行多项优化。其中一些是预先执行的,另一些则是随着具体化数据传入而即时确定的。
以下是 Polars 进行的优化、它们的作用以及运行频率的非完整概述。
优化 | 说明 | 运行次数 |
---|---|---|
谓词下推 | 尽早/在扫描级别应用过滤器。 | 1 次 |
投影下推 | 仅在扫描级别选择所需的列。 | 1 次 |
切片下推 | 仅从扫描级别加载所需的切片。不要具体化切片输出(例如 join.head(10))。 | 1 次 |
公共子计划消除 | 缓存查询计划中被多个子树使用的子树/文件扫描。 | 1 次 |
简化表达式 | 各种优化,例如常量折叠和用更快的方法替换开销大的操作。 | 直到不动点 |
连接排序 | 估计应首先执行的连接分支,以减少内存压力。 | 1 次 |
类型强制转换 | 强制转换类型,使操作成功并在所需的最小内存上运行。 | 直到不动点 |
基数估计 | 估计基数以确定最佳的分组策略。 | 0/n 次;取决于查询 |