【发布时间】:2010-09-27 17:30:50
【问题描述】:
SQL Server 中的 T-SQL 查询是否支持短路?
例如,我有两个数据库,我正在比较两个表之间的数据以匹配并复制一些信息。在一个表中,“ID”字段总是有前导零(例如“000000001234”),而在另一个表中,ID 字段可能有也可能没有前导零(可能是“000000001234”或“1234”)。
所以我匹配这两者的查询是这样的: select * from table1 where table1.ID LIKE '%1234'
为了加快速度,我正在考虑在类似内容之前添加一个 OR,即: 表 1.ID = 表 2.ID 处理两个 ID 都填充零且相等的情况。
这样做是否会通过匹配“=”上的项目而不是评估每一行的 LIKE 来加快查询速度(是否会短路并跳过 LIKE)?
【问题讨论】:
-
table1.ID LIKE '%1234' 会匹配“31234”怎么样?
-
好吧,搜索过滤器会更像 '%00001234' - 还有一些前导零。
标签: sql sql-server