17 個の結合 (内側と左右の外側の両方) とサブクエリを含む複雑なクエリに基づくビューを使用します。すべてのビュー行が約 5 秒で表示されます。
SELECT * FROM a_view;
ビュー列の 1 つに BIT 型があります。そして、それを 1 と比較してビューの行をフィルタリングすると、クエリは約 5 秒で再び機能します。
SELECT * FROM a_view WHERE c = 1;
しかし、この BIT 列を 0 と比較すると、クエリは約 50 秒 (10 倍遅く) 動作します。
SELECT * FROM a_view WHERE c = 0;
同じ結果行を返すこのクエリは、約 10 秒間期待どおりに機能します。
SELECT * FROM a_view
EXCEPT
SELECT * FROM a_view WHERE c = 1;
では、なぜ 0 または 'FALSE' との比較に時間がかかるのでしょうか。アイデアをお願いします。
この BIT フィールドでのソートは高速です。他の列によるフィルタリングも高速です。