SQL 优化技术系列: 谓词下推

Posted 东海陈光剑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 优化技术系列: 谓词下推相关的知识,希望对你有一定的参考价值。

将外层查询块的 WHERE 子句中的谓词移入所包含的较低层查询块(例如视图),从而能够提早进行数据过滤以及有可能更好地利用索引。

这在分区数据库环境中甚至更为重要,其原因在于,提早进行过滤有可能减少必须在数据库分区之间传递的数据量。

此优化技术在 SQL 中被称为谓词下推(Predicate pushdown) 。

基本策略是,始终将过滤表达式尽可能移至靠近数据源的位置。

事实主流的数据库基本上都支持这种方式的优化。其原则是在一个查询树中,对于任何选择都尽量早做选择,然后进行一步的处理.可见我们并不需要改写这个sql,优化器会自动去帮我们做这种优化.

如:优化前的SQL:

SELECT * FROM t_student, t_score
WHERE t_score.student_id=t_student.student_id
AND t_score.score_id=2;

谓词下推优化:

SELECT * FROM t_student t1 
right JOIN (
SELECT * from t_score WHERE score_id=2
) t2
ON t1.student_id=t2.student_id;

以上是关于SQL 优化技术系列: 谓词下推的主要内容,如果未能解决你的问题,请参考以下文章

谓词下推

hive sql 优化

Spark查询优化之谓词下推

聊聊谓词下推的事

大数据SparkSql连接查询中的谓词下推处理

什么是谓词下推,看这一篇就够了