🤖 AI Summary
To address the low execution efficiency of SQL correlated subqueries, this paper proposes a predicate separation optimization technique: predicates in the subquery that are independent of the outer query are precomputed and applied for early filtering, thereby significantly reducing the number of correlated subquery invocations. Building upon this rewrite, we design a novel execution architecture on a block-based Volcano model, integrating position-aware columnar storage with late materialization. Our core contribution is the first deep integration of predicate correlation analysis with storage- and execution-layer optimizations. Experimental evaluation on PosDB and PostgreSQL demonstrates up to 5× query speedup. Additionally, we introduce a lightweight cost model to accurately estimate the optimization benefits.
📝 Abstract
In this paper, we discuss a novel technique for processing correlated subqueries in SQL. The core idea is to isolate the non-correlated part of the predicate and use it to reduce the number of evaluations of the correlated part. We begin by providing an overview of several classes of queries that may benefit from this technique. For each class, we propose a potential rewrite and discuss the conditions under which it is advantageous. Next, we address the evaluation aspects of the proposed rewrites: 1) we describe our approach to adapting the block-based Volcano query processing model, and 2) we discuss the benefits of implementing that technique within a position-enabled column-store with late materialization support. Finally, we present a simple cost model that allows estimation of the benefits of said rewrites.
Our evaluation has a quantitative part and a qualitative part. The former focuses on studying the impact of non-correlated predicate selectivity on our technique. The latter identifies the limitations of our approach by comparing it with alternative approaches available in existing systems. Overall, experiments conducted using PosDB (a position-enabled column-store) and PostgreSQL demonstrated that, under suitable conditions, our technique can achieve a 5x improvement.