考虑以下 SQL:
select * from dbname.tablename
where
field1 = 'a' and
field2 = 'b' and
field3 = 'c' and
1=1
您可能想知道为什么我会1=1
在 WHERE 子句的末尾添加。对于临时查询,我这样做是为了可以注释掉任何条件组合,而无需修改 SQL。使用此 SQL,我可以注释掉,field1 = 'a' and
并且由于尾随1=1
条件,SQL 将起作用。考虑这个没有这个小技巧的 SQL:
field1 = 'a' and
field2 = 'b' and
field3 = 'c'
注释掉field3 = 'c'
会破坏 SQL,因为它会field2 = 'b' and
被视为最终条件,它会向你咆哮,“还有什么??”
我问这个的原因是因为我知道在1=1
将 SQL 粘贴到生产查询之前忘记从 WHERE 子句中删除。我想知道这是否会影响性能。 1=1
是一个恒定的条件,所以即使记录集包含 10,000 行,这里是否真的进行了艰苦的计算?