我遇到了这个问题:
我想询问是否使用查询
SELECT * FROM table WHERE 0=1
或
SELECT TOP 0 * FROM table
它会立即返回列名,还是会继续解析整个表并最终返回零结果?
我有一个包含 10,000 行的生产表 - 它会检查每行的 WHERE
条件吗?
最佳答案
SQL Server 查询优化器足够聪明,可以发现此 WHERE
条件永远不会产生true
结果出现在任何行上,因此实际上不需要扫描表。
如果您查看此类查询的实际执行计划,很容易发现什么都没有执行,并且查询立即返回:
关于sql - "Where 0=1"会解析整个表还是只返回列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37405527/