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