where 1=1低效?

最近一直有点纠结于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是不是低效的?

作者:张雪飞
出处:https://zhangxuefei.site/p/289
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注