Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
谓词下推(Predicate Pushdown)是一种减少查询数据量的技术。当执行SQL查询时,某些过滤条件可以提前应用到数据读取阶段,从而减少数据的读取和传输量,提高查询性能。比如,当我们执行类似 SELECT * FROM user WHERE age > 30 的查询时,理想的情况是只读取满足 age > 30 的数据,而不是读取整个表到内存中再进行过滤。
如何实现谓词下推
谓词下推一般是通过在数据存储中保存额外的统计信息(如每一列的Min/Max值),通过这些统计信息来过滤掉文件的部分甚至整个文件。还是以SELECT * FROM user WHERE age > 30 为例,假如user表中的记录保存在三个文件中,每个文件中age的最大值最小值分别为:
上面的例子中都是通过Min/Max值信息进行的过滤,这些信息主要针对>,<以及=这样的谓词条件进行过滤。除此以外,还可以通过记录nul值的个数,用来对像name is null或者name is not null 这样的谓词进行过滤。而对于name like "%jerry%"这样的谓词,就无法进行过滤,因此这样的谓词就不可以被下推。