最近一直有点纠结于sql语句里面的where 1=1是不是低效的?有人跟我说不会降低sql的效率,但是我理解这里应该是低效的。有一些是说where 1=1会造成数据库表的优化失效,比如聚集索引的什么,具体我也不清楚里面的原理是怎样的。
我这样觉得:
当我们select 1 from table 时,我们可以看到在结果集的每一列都加了1,从这里我判断是全表扫描了的。所以当select * from table where 1=1时,这里并不是简单的bool判断,而是给每一列加上了1然后判断1=1,因为当我们直接写成where true时是会报错的。所以从这点上分析,我理解为where 1=1会造成全表扫描故而这样写也是低效的。但是我在上100w条数据的表里面做测试发现,查询时间大多是一样的,偶尔会相差1秒的样子。
所以请大牛们能给点意见,到底where 1=1是不是低效的?