当前位置:  开发笔记 > 数据库 > 正文

SQL Server - 查询短路?

如何解决《SQLServer-查询短路?》经验,为你挑选了2个好方法。

SQL Server中的T-SQL查询是否支持短路?

例如,我有一种情况,我有两个数据库,我正在比较两个表之间的数据,以匹配和复制一些信息.在一个表中,"ID"字段将始终具有前导零(例如"000000001234"),而在另一个表中,ID字段可以具有或不具有前导零(可以是"000000001234"或"1234").

所以我的匹配两者的查询是这样的:select*from table1 where table1.ID LIKE'%1234'

为了加快速度,我想在之前添加一个OR,它只是说:table1.ID = table2.ID来处理这两个ID都有填充零并且相等的情况.

这样做会通过匹配"="上的项目来加速查询,而不是为每一行评估LIKE(它会短路并跳过LIKE)吗?



1> G Mastros..:

您可以向表中添加计算列.然后,索引计算列并在连接中使用该列.

例如:

Alter Table Table1 Add PaddedId As Right('000000000000' + Id, 12)
Create Index idx_WhateverIndexNameYouWant On Table1(PaddedId)

然后你的查询将是......

select * from table1 where table1.PaddedID ='000000001234'

这将使用您刚创建的索引快速返回行.



2> Mladen Prajd..:

SQL Server会短路where条件.它不能,因为它是一个基于成本的系统:SQL Server如何短路WHERE条件评估.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有