我使用基于具有 17 个连接(内部和左/右外部)和子查询的复杂查询的视图。所有视图行在大约 5 秒内显示。
SELECT * FROM a_view;
视图列之一具有 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 字段上排序很快。按其他列过滤也很快。