SQL表比较需要较长的时间
我正在构建一个应用程序,以帮助从不同来源动态获取数据文件和电子邮件(通常是CSV和Excel)、API和其他SQL数据库,并对其进行处理,然后将其移动到中央SQL server。所有表都将上载到主SQL server,并进行处理,以将新行插入到目标表中,并使用更改的数据更新行(如果某些行可用)。主SQL server是Microsoft SQL server 当数据上传到主服务器进行比较时,它被存储在一个临时表中,该临时表在比较完成后被删除。我正在使用的语句是由程序动态创建的,以便允许它对不同的数据集是动态的。我一直使用的是一个notexists,当我在一个包含380k+行数据的表上运行它时,处理该数据已经花费了2个多小时。我也尝试了EXCEPT,但是我无法使用它,因为一些表包含不能用于EXCEPT语句的文本字段。正在上载到服务器的数据集根据程序中内置的计划以不同的时间间隔写入和读取 我希望找到一种更有效的方法或改进,以便缩短此表的运行时间。管理服务器的程序运行在远程服务器上,而不是运行在部分SQL服务器场上的SQL实例。我对SQL不是很有经验,所以我感谢所有可能得到的帮助。下面,我添加了代码链接和系统在运行比较时生成的示例语句 C#代码: SQL语句:SQL表比较需要较长的时间,sql,sql-server,Sql,Sql Server,我正在构建一个应用程序,以帮助从不同来源动态获取数据文件和电子邮件(通常是CSV和Excel)、API和其他SQL数据库,并对其进行处理,然后将其移动到中央SQL server。所有表都将上载到主SQL server,并进行处理,以将新行插入到目标表中,并使用更改的数据更新行(如果某些行可用)。主SQL server是Microsoft SQL server 当数据上传到主服务器进行比较时,它被存储在一个临时表中,该临时表在比较完成后被删除。我正在使用的语句是由程序动态创建的,以便允许它对不同的
一个简单的查询表单是从联合加载一个新表(包括重复数据消除) 乙二醇 然后用ALTER TABLE交换这些表。。。切换或放下并重新命名sp_
INSERT INTO vewCovid19_SP
(Street_Number,Street_Dir,Street_Name,Street_Type,Apt,Municipality,County,x_cord,y_cord,address,Event_Number,latitude,longitude,Test_Type,Created_On_Date,msg)
SELECT A.Street_Number,A.Street_Dir,A.Street_Name,A.Street_Type,A.Apt,A.Municipality,A.County,A.x_cord,A.y_cord,A.address,A.Event_Number,A.latitude,A.longitude,A.Test_Type,A.Created_On_Date,A.msg
FROM #TEMP_UPLOAD A
WHERE NOT EXISTS
SELECT * FROM vewCovid19_SP B
WHERE ISNULL(CONVERT(VARCHAR,A.Street_Number), 'NULL') = ISNULL(CONVERT(VARCHAR,B.Street_Number), 'NULL')
AND ISNULL(CONVERT(VARCHAR,A.Street_Dir), 'NULL') = ISNULL(CONVERT(VARCHAR,B.Street_Dir), 'NULL')
AND ISNULL(CONVERT(VARCHAR,A.Apt), 'NULL') = ISNULL(CONVERT(VARCHAR,B.Apt), 'NULL')
AND ISNULL(CONVERT(VARCHAR,A.Street_Name), 'NULL') = ISNULL(CONVERT(VARCHAR,B.Street_Name), 'NULL')
AND ISNULL(CONVERT(VARCHAR,A.Street_Type), 'NULL') = ISNULL(CONVERT(VARCHAR,B.Street_Type), 'NULL'));
DROP TABLE #TEMP_UPLOAD"
insert into viewCovid19_SP_new
select *
from vewCovid19_SP
union
select *
from #temp_upload