TSQL 位 =0 和 <>1
TSQL BIT =0 and <>1
我这样写有什么不同吗
select * from table where bit_field = 0
或
select * from table where bit_field <> 1
?
更新:
我有一份报告说最好使用 "bit_field = 0" 版本,因为如果你在某个字段上有一些索引并使用第二个选项,"Seek Predicates" 会出现一些问题......它有两个搜索谓词一个 < 1 和另一个 > 1 ... 或其他东西。
我没有任何例子可以展示。 :(
<>改为=后,排他锁(X)和意向排他锁(IX)减少
有什么想法吗?
应该没有区别,因为a bit 只取0和1的值
两者都将排除 NULL
个值。
两个查询之间应该没有区别。如果不存在 NULL
个值,那么显然任何值为零也等同于不为一。如果存在 NULL
,它不会改变任何东西,因为任何查询都不会返回 NULL
记录。
请参阅下面的演示。
我这样写有什么不同吗
select * from table where bit_field = 0
或
select * from table where bit_field <> 1
?
更新: 我有一份报告说最好使用 "bit_field = 0" 版本,因为如果你在某个字段上有一些索引并使用第二个选项,"Seek Predicates" 会出现一些问题......它有两个搜索谓词一个 < 1 和另一个 > 1 ... 或其他东西。 我没有任何例子可以展示。 :( <>改为=后,排他锁(X)和意向排他锁(IX)减少 有什么想法吗?
应该没有区别,因为a bit 只取0和1的值
两者都将排除 NULL
个值。
两个查询之间应该没有区别。如果不存在 NULL
个值,那么显然任何值为零也等同于不为一。如果存在 NULL
,它不会改变任何东西,因为任何查询都不会返回 NULL
记录。
请参阅下面的演示。