在一次项目的开发过程中,涉及到多张表的联合查询,代码在本地自测的时候并出现锁表的情况,把sql单独抽出来,仔细排查,发现在sql中and or
同时使用的时候,忘记了加括号导致的,导致查询的数据量剧增,导致锁表。
当我们同时使用and、or关键字的时候,需要注意:
- 两者一起使用的时候,
and 的优先级高于or
。
示例:
select * from emp where sal < 1500 or sal >= 2000 and job = 'analyst';
上述等价于:
select * from emp where sal < 1500 or (sal >= 2000 and job = 'analyst');
而不是我们所预期的:
select * from emp where (sal < 1500 or sal >= 2000) and job = 'analyst';