我需要在表格中搜索来自外部来源的多个电话号码。因为表中的格式不严格(1234567或123-4567),所以我使用了通配符并创建了一个临时表来存放数字。
然后,我通过数据库单独检查这些,并将它们放在第三个表中。
我已经读过光标类型命令效率不高,通常有更好的方法来解决SQL Server中的这些问题,但我的SQL知识充其量只是最小的,我甚至不知道从哪里开始。
查询按原样运行并完全返回我想要的内容,但是当我增加记录数时,它会线性增加执行时间,如果我想搜索1000个电话号码,这是不可持续的。
下面是我的代码片段。如何用更有效的方法替换它?如果我应该包含其他信息,请告诉我。
while @count_ < 77
Begin
Select @record = (select number
from @phoneNumbers
where Id_ = @count_)
INSERT @updatesFinal
SELECT
updates.[rowno], cust.no_, [empl],
[emplbr], [time_], [super], [column_],
[tablename], [urowno], [entered],
[new], [old], [seqno_updatesix]
FROM
[db1].[dbo].[updates]
INNER JOIN
db1.dbo.addr ON db1.rowno = updates.urowno
INNER JOIN
db1.dbo.cust ON cust.rowno = addr.rowno_custaddr_cust
WHERE
updates.column_ LIKE ('phone%')
AND old LIKE @record
SET @count_ = @count_ + 1
END