【发布时间】:2013-04-06 22:39:35
【问题描述】:
此查询来自答案here。 where 子句中有 (1=1),但执行计划相同(SQL Express 2008R2)。
我猜这是古代的神器?
SELECT
ind.name
,ind.index_id
,ic.index_column_id
,col.name
,ind.*
,ic.*
,col.*
FROM sys.indexes ind
INNER JOIN sys.index_columns ic
ON ind.object_id = ic.object_id and ind.index_id = ic.index_id
INNER JOIN sys.columns col
ON ic.object_id = col.object_id and ic.column_id = col.column_id
INNER JOIN sys.tables t
ON ind.object_id = t.object_id
WHERE (1=1)
AND ind.is_primary_key = 0
AND ind.is_unique = 0
AND ind.is_unique_constraint = 0
AND t.is_ms_shipped = 0
ORDER BY
t.name, ind.name, ind.index_id, ic.index_column_id
【问题讨论】:
-
(1=1) 等于 true,尝试删除 where 语句,看看会发生什么。
-
有时 1 = 1 或 1=2 用于做一些总是返回 true 或 false 的事情,以帮助原始程序员开发他们的逻辑。然后他们就把它放在那里。
标签: sql where-clause