1

此查询来自此处的答案。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 
4

1 回答 1

9

从代码生成动态 SQL 时,根据需要从WHERE (1=1)then concatenate\append开始会很有用AND <Condition>。不确定该答案是否是这种情况,但也许它是基于一些用于生成 SQL 的代码。

于 2013-04-14T21:41:45.887 回答