Skip to content

Latest commit

 

History

History
18 lines (12 loc) · 1.47 KB

File metadata and controls

18 lines (12 loc) · 1.47 KB
title Column Pruning
summary TiDB での列プルーニングの使用法について学習します。

カラムの剪定 {#column-pruning}

列プルーニングの基本的な考え方は、演算子で使用されない列については、最適化中にオプティマイザが保持する必要がないというものです。これらの列を削除することで、I/Oリソースの使用量を削減し、後続の最適化を容易にします。以下は列の繰り返しの例です。

テーブルtに4つの列(a、b、c、d)があるとします。次の文を実行できます。

select a from t where b> 5

このクエリでは、列aと列bのみが使用され、列cと列dは冗長です。この文のクエリプランでは、 Selectionの演算子が列bを使用し、 DataSource演算子が列aと列bを使用します。5 DataSource演算子は列cと列dを読み取らないため、これらはプルーニング可能です。

そのため、TiDBはロジック最適化フェーズでトップダウンスキャンを実行する際に、リソースの無駄を削減するために冗長な列をプルーニングします。このスキャン処理は「カラムの剪定」と呼ばれ、ルールcolumnPrunerに対応しています。このルールを無効にしたい場合は、 最適化ルールのブロックリストと式プッシュダウンを参照してください。