問題タブ [postgres-9.6]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
131 参照

sql - Postgres で再帰 CTE を使用して AST をビルドする

次の表を指定します。

最終的な AST を計算する方法: AND(NOT(AND(K, OR(X, A, B))), OR(Y, Z))

再帰 CTE でさまざまなアプローチを試みましたが、私の問題は、CTE が CTE の再帰部分での集計も、CTE が使用されるサブクエリも許可しないことです。

私が試した最新のことはこれでした:

しかし、CTEの制限により機能しませんでした。

ドキュメントによると、CTE は完全なチューリングですが、目的の結果を計算する方法が見つかりません。私は何かを見逃していますか、それともチューリングの完全性についての私の理解は間違っていますか? :)

(私はPostgres 9.6を持っています)

0 投票する
1 に答える
149 参照

postgresql - マルチカラム インデックスはインデックス オンリー スキャンには使用されませんが、部分インデックスは使用されます

私の質問は、同等の情報を持つ部分インデックスが使用されているのに(私が思うに)、インデックスのみのスキャンに複数列インデックスが使用されない理由です。

テーブル:

コンテンツのサンプル:

実行する必要があるクエリは次のとおりです。

ここで、部分インデックスを使用するとします。クエリは (最終的に) インデックスのみのスキャンとして実行されます。

私が理解していないのは、次の形式の複数列インデックスがインデックスのみのスキャンに使用されないのはなぜですか?

Trueクエリは、フラグがすべての ID を決定するbtree のすべての連続する葉にアクセスできませんか?

(インデックスのみのスキャンは部分的なインデックスで使用されるため、タプルの可視性はおそらく問題ではないことに注意してくださいi1。)

私のPostgresのバージョンは次のとおりです。PostgreSQL 9.6.2 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.3.1-14ubuntu2) 5.3.1 20160413, 64-bit