我有一张大约有 100 万条记录的表。表结构如下所示。 UID 列是主键和唯一标识符类型。
Table_A(包含一百万条记录)
UID Name
-----------------------------------------------------------
E8CDD244-B8E4-4807-B04D-FE6FDB71F995 DummyRecord
我还有一个函数叫做
fn_Split('Guid_1,Guid_2,Guid_3,....,Guid_n')
接受逗号列表分离 guid 并返回一个包含 guid 的表变量。
从我的应用程序代码中,我传递了一个 sql 查询以获取新的 guid [与应用程序代码一起但不在数据库表中的键]
var sb = new StringBuilder();
sb
.Append(" SELECT NewKey ")
.AppendFormat(" FROM fn_Split ('{0}') ", keyList)
.Append(" EXCEPT ")
.Append("SELECT UID from Table_A");
第一次执行此命令时,它会在很多情况下超时。我试图找出什么是更好的方法来避免这种超时和/或提高性能。
谢谢。
最佳答案
如果没有,首先在 table_a.uid 上添加一个索引,但我假设有。
尝试一些替代查询,
select newkey
from fn_split
left outer join table_a
on newkey = uid
where uid IS NULL
select newkey
from fn_split(blah)
where newkey not in (select uid
from table_a)
select newkey
from fn_split(blah) f
where not exists(select uid
from table_a a
where f.newkey = a.uid)
关于c# - T-SQL 查询超时/性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4383136/